我有這樣一些樣本數據:邏輯,以檢查是否確切的ID是否存在SQL Server中的組
INSERT INTO mytable ([ID], [FK_ID], [TYPE_ID])
VALUES
(1, 10, 1),
(2, 11, 1), (3, 11, 2),
(4, 12, 1), (5, 12, 2), (6, 12, 3),
(7, 14, 2), (8, 14, 3)
現在,在這裏我想通過FK_ID
檢查,如果每個組中我們有精確匹配TYPE_ID
值1 & 2
。
因此,預期輸出是這樣的:
(1, 10, 1)
這會失敗- 作爲組
FK_ID = 10
我們只有一個記錄
- 作爲組
(2, 11, 1), (3, 11, 2)
這應該通過- 與組一樣我們有兩條記錄。
- 而且兩個
TYPE_ID
都匹配1 & 2
的值。
(4, 12, 1), (5, 12, 2), (6, 12, 3)
這也應該失敗- 因爲我們有3條記錄在這裏。
(7, 14, 2), (8, 14, 3)
這也應該失敗- 儘管我們有確切的兩個記錄,它應該作爲這裏的
TYPE_ID
不與1 & 2
值匹配失敗。
- 儘管我們有確切的兩個記錄,它應該作爲這裏的
這裏是我的嘗試:
select *
from mytable t1
where exists (select count(t2.TYPE_ID)
from mytable t2
where t2.FK_ID = t1.FK_ID
and t2.TYPE_ID in (1, 2)
group by t2.FK_ID
having count(t2.TYPE_ID) = 2);
這工作不正常,因爲它也通過了FK_ID = 12
其中有三個記錄。
演示:SQL Fiddle
感謝您的解決方案。有效。 – CodeNewbie
@CodeNewbie最好的方法來感謝Stackoverflow中的人是接受它作爲你的答案 – Valli
我們該怎麼做?我不知道該怎麼做。 – CodeNewbie