sql如何根据一个字段的多个值查询

1,根据menuid查询companyid
2,menuid可以是一个可以是多个
3,如果是menuid是多个那么只查询完全符合条件的companyid
例如:menuid=5和8那么只查询出companyid=2

具体方法如下:

假定表名test,列id是数值类型。
用同一个字段的多个值作为条件来查询可以使用in或者or。

具体语句如下: 

1、select * from test where id in (1,2,3)

2、select * from test where id = 1 or id =2 or id = 3

显然第一种方法更简便。 

PS: 如果如你消息所说,有一个选课表test,学生号id,所选课程名name,那么,检索同时选择了美术、体育、音乐三门课程的学生id的语法如下:

select a.id from test a,test b,test c
where a.id = b.id and b.i
d = c.id and a.name = '美术' and b.name = '体育' and c.name = '音乐';

问题的关键,在于test表通过别名做三次关联查询。

温馨提示:内容为网友见解,仅供参考
第1个回答  推荐于2017-11-24
如果menuid是列表1,5,8
那么select distinct companyid from menutable where menuid in('1','5','8')(如果menuid为字符类型,数字类型将引号去掉)

如果传入的menuid是个字符串1,5,8
那么写成select distinct companyid from menutable where ',1,5,8,' like '%,'+cast(menuid as varchar)+',%'本回答被提问者采纳
第2个回答  2011-06-14
select 别名.字段1,别名.字段2,别名.字段3 FROM 表.别名 WHERE 别名.字段1 IN ('字段1值1',字段1值2'','字段1值3');
用关键字 IN实现 一个字段的多个值查询,上面使用伪代码举例
希望我的回答对你有帮助。。
第3个回答  2015-04-04
代码如下:
  SELECT * FROM news_extinfo
where
(ExtID = 1 and OptionValue = 0)
or (ExtID = 2 and OptionValue = 0 )
or (ExtID = 3 and OptionValue = 0 )
group by NewsID
having count(*)=3

此处 count(*) = 3 表示的意思是

在查询的结果中,只查出按group 分组之后,每个组的有3条数据的结果集
第4个回答  2011-06-14
select companyid from 表名 where menuid in (值 , 值 , ……)
或者 menuid是根据别的条件从别的地方查出来的
select companyid from 表名 where menuid in (select menuid from .....)
相似回答