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

2024-11-25 20:51:33
推荐回答(5个)
回答1:

具体方法如下:

假定表名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表通过别名做三次关联查询。

回答2:

如果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)+',%'

回答3:

select 别名.字段1,别名.字段2,别名.字段3 FROM 表.别名 WHERE 别名.字段1 IN ('字段1值1',字段1值2'','字段1值3');
用关键字 IN实现 一个字段的多个值查询,上面使用伪代码举例
希望我的回答对你有帮助。。

回答4:

代码如下:
  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条数据的结果集

回答5:

select companyid from 表名 where menuid in (值 , 值 , ……)
或者 menuid是根据别的条件从别的地方查出来的
select companyid from 表名 where menuid in (select menuid from .....)