我要挑從使用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 ** **? –