我在具有列FirstID和SecondID的(SQL Server 2014)數據庫中有一個聯結表。給定一個特定的FirstID,我希望從表中找到所有其他具有等效SecondIDs集合的FirstID(即使該集合是空的)。 示例數據:在數據庫表中查找匹配集合
FirstId SecondId
1 1
1 2
2 3
3 1
3 2
... ...
在樣本數據的情況下,如果我指定FirstID = 1,則我期望3出現在結果集。
我試過以下,到目前爲止,這工作得很好,除了空集:
SELECT FirstSecondEqualSet.FirstId
FROM FirstSecond FirstSecondOriginal
INNER JOIN FirstSecond FirstSecondEqualSet ON FirstSecondOriginal.SecondId = FirstSecondEqualSet.SecondId
WHERE FirstSecondOriginal.FirstId = @FirstId
AND FirstSecondEqualSet.FirstId != @FirstId
GROUP BY FirstSecondEqualSet.FirstId
HAVING COUNT(1) = (SELECT COUNT(1) FROM FirstSecond WHERE FirstSecond.FirstId = @FirstId)
謝謝,但是這基本上是我在我的問題寫了同樣的事情(唯一的區別是,你從WHERE子句聯接表達式,它是由相同的解釋移動f1.FirstId <> f2.FirstId大多數RDBMS引擎)。 – Patrick
噢,對不起。你能否詳細說明* empty set *問題? –
編輯:沒關係,我只是意識到空集的東西是沒有意義的,沒有領域的情況下,並不是真的那個正確的場地。 – Patrick