为了账号安全,请及时绑定邮箱和手机立即绑定

求一个sql语句,在线等,急着要,谢谢各位大虾...

求一个sql语句,在线等,急着要,谢谢各位大虾...

繁星点点滴滴 2018-12-06 19:52:45
id            schoolId          schoolName              course 1             1                     崇州电子职业学院        广告设计组 2             1                     崇州电子职业学院       软件工程组 这个是教师组表,course   一个教师可以属于多个组,如软件工程组,软件工程组,等等, select  username,courseid,course from users username           courseid(varchar)           course test                      1,2                   广告设计组,软件工程组 张三                      1                      广告设计组 李四                      2                      软件工程组 ,现在我要的结果是如果我选择广告设计组,结果是 test                      1,2                   广告设计组,软件工程组 张三                      1                      广告设计组 ,如果我选择的是软件工程组, test                      1,2                   广告设计组,软件工程组 李四                      2                      软件工程组  如果我选择了广告设计组和软件工程组,那么结果应该是:   test                      1,2                   广告设计组,软件工程组 test                      1,2                   广告设计组,软件工程组 张三                      1                      广告设计组 李四                      2                      软件工程组   ,该怎么写sql语句啊 ,我用了in和exists都不是我要的结果,急等,谢谢
查看完整描述

9 回答

?
桃花长相依

TA贡献1860条经验 获得超8个赞

这是一个合并行的问题:

SqlServer的解决方案:

select  username,

courseids = STUFF((select ','+courseid from users where username = U.username FOR XML PATH(' '),1,1,''),

 courses = STUFF((select ','+course from users where course= U.courseFOR XML PATH(' '),1,1,'') from users U group by users;

查看完整回答
反对 回复 2019-01-07
?
慕婉清6462132

TA贡献1804条经验 获得超2个赞

select * from users where course in ('广告设计组')

或者

select * from users where courseid in (1)

 

难道不行?

查看完整回答
反对 回复 2019-01-07
?
素胚勾勒不出你

TA贡献1827条经验 获得超9个赞

不行,我试过了...
查看完整回答
反对 回复 2019-01-07
?
慕姐4208626

TA贡献1852条经验 获得超7个赞

是不是只有这2中组呢,如果是的话,在选择2个的时候直接传一个特殊的值,然后存储过程判断,如果是特殊的值就

select * from users

不然就判断。

查看完整回答
反对 回复 2019-01-07
?
森林海

TA贡献2011条经验 获得超2个赞

为啥表要设计成这样呢

查看完整回答
反对 回复 2019-01-07
?
墨色风雨

TA贡献1853条经验 获得超6个赞

兄弟这事简单,你用charindex函数就可以 举个例子,比如你想要广告设计组和软件工程组,写法如下:

select * from users where charindex('1',courseid)>0 OR charindex('2',courseid)>0

这样就可以解决问题。但是接下来还要注意一点就是编号为11 也包含1,这样话,就需要个小技巧,在courseid两边分别加逗号,在查找的编号两边加引号,这样用charindex就不会有问题了

查看完整回答
反对 回复 2019-01-07
  • 9 回答
  • 0 关注
  • 595 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信