具体方法如下:
假定表名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表通过别名做三次关联查询。
如果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)+',%'
select 别名.字段1,别名.字段2,别名.字段3 FROM 表.别名 WHERE 别名.字段1 IN ('字段1值1',字段1值2'','字段1值3');
用关键字 IN实现 一个字段的多个值查询,上面使用伪代码举例
希望我的回答对你有帮助。。
代码如下:
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条数据的结果集
select companyid from 表名 where menuid in (值 , 值 , ……)
或者 menuid是根据别的条件从别的地方查出来的
select companyid from 表名 where menuid in (select menuid from .....)