我想使用and
子句查询从同一列中选择值,如下所示:
select *
from degree_detail_result
where course_id=1 and course_id=2 and course_id=3
上述查询有什么问题?
答案 0 :(得分:3)
使用in
:
select * from degree_detail_result where course_id in (1,2,3)
请注意and
不起作用,因为它要求两边的条件同时为真,这显然是不可能的。
如果您希望将结果 next 发送给彼此而不是分开的行,则可以使用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
答案 1 :(得分:1)
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;