请教sql,缺了点东西不会写了

有表1,表2。想根据不同用户查询表2输出表1不同内容 ,表1表2共有字段bm

权限控制在表2。根据用户名来取,三个字段用户名,权限级别,部门。权限为1就取表1全部,权限为2就返回权限表的bm来取表1

FineReport 用户29408816 发布于 2021-6-21 15:32 (编辑于 2021-6-21 15:44)
1min目标场景问卷 立即参与
回答问题
悬赏:3 F币 + 添加悬赏
提示:增加悬赏、完善问题、追问等操作,可使您的问题被置顶,并向所有关注者发送通知
共3回答
最佳回答
0
杨朝健Lv5中级互助
发布于2021-6-21 16:12

select * from 表1 ttt

where exists (

    select 1 from 表2 

    where 用户名='${fine_username}'

    and (权限级别='1' or bm=ttt.bm)

)

最佳回答
0
ColdmanLv6高级互助
发布于2021-6-21 15:35(编辑于 2021-6-21 15:50)

自己想想你这个需求是不是本身就存在问题,如果表1是这样的,你要查询什么结果

image.png

——————————————————————————————————————

虽然没太看懂,但是感觉你这个是可以用union来合并两个不同条件SQL的结果

  • 用户29408816 用户29408816(提问者) 权限控制在另外一个表。根据用户名来取,三个字段用户名,权限级别,部门。 权限为1 就去表1全部,权限为2 就返回权限表的bm 来取表1
    2021-06-21 15:38 
  • Coldman Coldman 回复 用户29408816(提问者) 自己理一下描述吧,你的描述我没看懂,描述详细点,别人不知道你的业务,你这样的描述可能只有你自己能懂是啥意思
    2021-06-21 15:42 
最佳回答
0
用户S5182147Lv6中级互助
发布于2021-6-21 15:42(编辑于 2021-6-21 16:28)

where IF((select 权限级别 from 表2 where 用户=登录用户 order by 权限级别 limit 1)=1,1=1,IF((select 权限级别 from 表2 where 用户=登录用户 order by 权限级别 limit 1)=2,bm IN (select distinct bm from 表2 where 用户=登录用户),1=0))

  • 4关注人数
  • 434浏览人数
  • 最后回答于:2021-6-21 16:28
    请选择关闭问题的原因
    确定 取消
    返回顶部