SQL问题

select distinct

org.base_name

from 

zh_ads.ads_data org,zh_ods.user_data_permission p

where p.username = 'abc'

and if(p.permission_type='1',if(p.base_flag is null,1=1,CONCAT(p.base_name,'基地')= org.base_name),1=1)

其中P表的数据为

image.png

org表数据为:

image.png

想问一下这样查出来的结果为什么还有成都?

if(p.permission_type='1',if(p.base_flag is null,1=1,CONCAT(p.base_name,'基地')= org.base_name),1=1)

里面嵌套的if默认为p.permission_type='1'吗?,不太理解这段sql的运行逻辑

SQL 帆软用户YbG5J0kkjo 发布于 2023-4-19 14:36
1min目标场景问卷 立即参与
回答问题
悬赏:0 F币 + 添加悬赏
提示:增加悬赏、完善问题、追问等操作,可使您的问题被置顶,并向所有关注者发送通知
共2回答
最佳回答
0
snrtuemcLv8专家互助
发布于2023-4-19 14:39

看语句,你p.permission_type不等于1的时候,最后判断了1=1了啊,全部选择啊

最佳回答
0
qiqits1984Lv6中级互助
发布于2023-4-19 14:46(编辑于 2023-4-19 14:47)

不等于1的时候 合部返回数据。等于1的时候,又加了一层判断,p.base_flag为null的又都返回了。

这个没更理解 加个基地又等于他自已 CONCAT(p.base_name,'基地')= org.base_name) ;false 的意思 ?

  • 2关注人数
  • 191浏览人数
  • 最后回答于:2023-4-19 14:47
    请选择关闭问题的原因
    确定 取消
    返回顶部