使用SQL Server中同一列上的多个WHERE条件进行选择
我想使用使用SQL Server中同一列上的多个WHERE条件进行选择,sql,sql-server,Sql,Sql Server,我想使用和子句查询从同一列中选取值,如下所示: select * from degree_detail_result where course_id=1 and course_id=2 and course_id=3 上面的查询有什么问题吗?在中使用: select * from degree_detail_result where course_id in (1,2,3) 请注意,和将不起作用,因为它要求两边的条件同时为真,这显然是不可能的 如果要获得彼此相邻的结果而不是单独的行,可
和
子句查询从同一列中选取值,如下所示:
select *
from degree_detail_result
where course_id=1 and course_id=2 and course_id=3
上面的查询有什么问题吗?在中使用:
select * from degree_detail_result where course_id in (1,2,3)
请注意,和
将不起作用,因为它要求两边的条件同时为真,这显然是不可能的
如果要获得彼此相邻的结果而不是单独的行,可以使用pivot
:
select * from degree_detail_result
pivot (min(degree_id) for course_id in ([1], [2], [3])) as degree
如果您想获得一个家长ID(您的问题中未提及),其中有课程ID 1、2和3的记录,您可以执行以下操作:
select degree_id from degree_detail_result
where course_id in (1,2,3)
group by degree_id
having count(distinct course_id) = 3
此查询将不起作用,因为无法同时满足此条件
您可以尝试使用INTERSECT
,但需要指定要查找的特定列,而不是SELECT*
i、 e.以下内容将不返回任何行
SELECT *
FROM degree_detail_result
WHERE course_id = 1
INTERSECT
SELECT *
FROM degree_detail_result
WHERE course_id = 2
INTERSECT
SELECT *
FROM degree_detail_result
WHERE course_id = 3;
你需要
SELECT degree_id
FROM degree_detail_result
WHERE course_id = 1
INTERSECT
SELECT degree_id
FROM degree_detail_result
WHERE course_id = 2
INTERSECT
SELECT degree_id
FROM degree_detail_result
WHERE course_id = 3;
给出示例数据和期望的结果。这些anded条件对于任何行都是相互排斥的。请详细说明您的条件。我最好的猜测是你需要或而不是和
。想想看:同一列怎么能同时包含值12和3?好的,我想知道什么是学位id,课程是1、2和3。告诉我我必须做什么??上面的方法也尝试过了,它还可以计算出使用相同comon id的学位id。只需选择它?你写的东西可以用多种方式解释。请编辑您的问题,提供示例数据,以及您希望从该数据中获得的输出。可能是基于该注释的副本。这是多余的。什么东西不在表格中使用,或者只使用布尔值或VS来敲击表格3次?谢谢您的回复
SELECT degree_id
FROM degree_detail_result
WHERE course_id = 1
INTERSECT
SELECT degree_id
FROM degree_detail_result
WHERE course_id = 2
INTERSECT
SELECT degree_id
FROM degree_detail_result
WHERE course_id = 3;