一个字段包含多个值,判断存在其中一个值为要取的值就算成功,SQL怎么写

1634696116(1).jpg1634568108(1).jpg

用户e5604884 发布于 2021-10-19 15:53 (编辑于 2021-10-20 10:15)
1min目标场景问卷 立即参与
回答问题
悬赏:3 F币 + 添加悬赏
提示:增加悬赏、完善问题、追问等操作,可使您的问题被置顶,并向所有关注者发送通知
共3回答
最佳回答
0
axingLv6专家互助
发布于2022-4-19 22:53

把含有爱好唱歌的用户信息先取出来去重

再用爱好表来左连接就可以了

select a.用户id,b.姓名,c.显示值 

from 爱好表 a

join 用户表 b on a.用户id=b.用户id

left join (select distinct 用户id,显示值 from 爱好表 where 爱好=77) c on a.用户id=c.用户id

image.png

最佳回答
0
JackRenLv6初级互助
发布于2021-10-19 15:58(编辑于 2021-10-19 15:58)

if(INARRAY($$$,'77')>0,"唱歌","")

用这个公式

  • 用户e5604884 用户e5604884(提问者) 我是在sql里面,不是公式
    2021-10-19 17:12 
  • JackRen JackRen 回复 用户e5604884(提问者) select charindex(\'77\',\'77,88,99\') sql server 直接用这个就可以,返回值大于0就是有77
    2021-10-19 17:23 
  • 用户e5604884 用户e5604884(提问者) 回复 JackRen oracle。。。
    2021-10-19 21:27 
  • JackRen JackRen 回复 用户e5604884(提问者) select a.用户id,a.姓名,case when b.用户id is not null then b.显示值 else \'\' end from 用户表 a left join 爱好表 b on a.用户id=b.用户id and b.爱好=\'77\' 试试这种方式把
    2021-10-20 08:31 
最佳回答
0
BasisLv5见习互助
发布于2021-10-19 16:01(编辑于 2021-10-19 17:16)

SQL :CASE WHEN B.爱好 = ‘77’THEN '唱歌' ELSE '' END

或者:https://www.cnblogs.com/yfb918/p/10411781.html

image.png

  • 用户e5604884 用户e5604884(提问者) decode就是这个意思,但是不能实现我有其他88,99的就会显示为空
    2021-10-19 17:12 
  • Basis Basis 回复 用户e5604884(提问者) 那是因为你只定义了77,又没有定义非77的。
    2021-10-19 17:13 
  • Basis Basis 回复 用户e5604884(提问者) 更新了,应该会写了吧?
    2021-10-19 17:17 
  • 用户e5604884 用户e5604884(提问者) 回复 Basis 我只能定义77,不能把88,99都定义了,因为其他用户可能有88,99,但是没有77,那个人就爱好就不会唱歌。我求问的意思是含77的我就取爱好唱歌,这种不知道怎么写
    2021-10-19 21:26 
  • Basis Basis 回复 用户e5604884(提问者) 一样的,你先定义77为唱歌,非77为空,然后按用户ID GROUP BY,就好了,这样不就满足了麦。 结果不就是:11 唱歌 12 唱歌 13 唱歌 14 空
    2021-10-20 09:50 
  • 4关注人数
  • 635浏览人数
  • 最后回答于:2022-4-19 22:53
    请选择关闭问题的原因
    确定 取消
    返回顶部