我要挑从使用and
子句查询相同的列值相同的列,这看起来是这样的:选择具有多个WHERE条件对从SQL Server
select *
from degree_detail_result
where course_id=1 and course_id=2 and course_id=3
有什么不对上述查询?
我要挑从使用and
子句查询相同的列值相同的列,这看起来是这样的:选择具有多个WHERE条件对从SQL Server
select *
from degree_detail_result
where course_id=1 and course_id=2 and course_id=3
有什么不对上述查询?
使用in
:
select * from degree_detail_result where course_id in (1,2,3)
注意and
,因为它需要在它两侧的条件,同时,这显然是不可能为真将无法正常工作。
如果你想要得到的结果下一个相互的,而不是单独的行,你可以使用pivot
:
select * from degree_detail_result
pivot (min(degree_id) for course_id in ([1], [2], [3])) as degree
如果你想获得一个父 ID(不提到你问题),对其中有用于COURSE_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
select *
from degree_detail_result
where course_id=1 and course_id=2 and course_id=3
此查询不起作用,因为此条件不能同时满足。
您可以尝试使用INTERSECT
,但你需要指定你正在寻找的,而不是SELECT *
特定列即下面将不返回行
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;
给出示例数据和预期结果。这些条件对任何行都是互斥的。 –
请*说出*你的情况。我最好的猜测是你需要'OR'而不是'AND'。 –
想一想:同一列如何同时包含值1 2和3 ** **? –