使用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;