似乎無法使此SQL查詢生效!我已經搜索了這個答案,雖然有些帖子接近,但他們只是錯過了這個標記。查找列中未找到其他行的值的行
給定一個表,Table1
,與Key1 (int), Key2 (int), and Type (varchar)
列...
我想獲得其中 Type
等於'TypeA'
和Key2
行是Null
沒有相應的行中的表,其中 Type
等於'TypeB'
和Key2
等於Key1
從另一行
所以,給出的數據
**KEY1** **Key2** **Type**
1 NULL TypeA
2 5 TypeA
3 1 TypeB
4 NULL TypeA
5 NULL TypeB
我想僅返回Key1 = 4的行,因爲該行符合Type ='TypeA'/ Key2 = NULL的條件,並且沒有Type ='TypeB'的對應行/ Key1 = Key2從另一行。
我已經試過這一點,它不工作...
SELECT t1.Key1, t1.Key2, t1.Type
FROM Table1 t1
WHERE t1.Key2 IS NULL
AND t1.Type LIKE 'TypeA'
AND t1.Key1 NOT IN
(SELECT Key1
FROM Table1 t2
WHERE t1.Key1 = t2.Key2
AND t1.Key1 <> t2.Key1
AND t2.Type LIKE 'TypeB')
如果你想「Type等於'TypeA'」,你會如何得到第三行? –
困惑了一下,Gordon的評論需要回答,而這一個:「和Key2是NULL,表中沒有相應的行......」如果key2爲null,那麼它當然在key1中沒有對應的行,除非你有key1中有一個空值的行。 key1 = 3如何返回?它似乎違反了你的定義的每個組成部分。你可以編輯你的問題,並將該行改寫成更清楚的內容嗎? – Twelfth
非常好的一點!我可以看到混淆的原因在於我詢問了Key1 = 3的行,而不是我真正想要的行,這是Key1 = 4的行。我編輯了這個問題,並對這個描述進行了修飾,並且一直在努力,並且一直希望不要添加更多的混淆。 – user1266896