2017-06-20 48 views
0

我不太確定如何定義這個問題。跟我在一起。sql查詢幫助,不知道如何定義這個

我想創建一個查詢,檢索與X的在行列的表中的行(這是一個虛表):

row col1 col2 col3 
x 1 a c 
x 2 b c 
x 3 a c 
    4 b d 
x 5 f g 

所以我想我的查詢的工作方式是檢索col2的值在col3中沒有行的所有行,其值爲d。 IE瀏覽器。值「a」將被檢索,因爲它只有col3的c,但不會檢索到值「b」,因爲它在第4行中的col3中有一個

我希望這很容易理解。

Ps。一旦我知道如何做查詢,我希望我會知道如何標題並重做它。 (儘管現在我想到了,也許這個標題最適合所有那些有我的問題的人)

回答

2

基於一切您所提供,我必須做出一些假設。做短表上的自聯接的,你可以在桌子上利用標識密鑰的使用一個簡單的查詢這樣:

SELECT * FROM TABLE_NAME 
WHERE id NOT IN (SELECT id FROM TABLE_NAME WHERE col3 = 'd'); 

如果你沒有在桌子上的身份密鑰,你可以做更多的事情是這樣的:

SELECT * FROM TABLE_NAME 
WHERE col2 NOT IN (SELECT col2 FROM TABLE_NAME WHERE col3 = 'd'); 

這兩個查詢將返回所有元組在有不在在COL3包含「d」元組COL2的元素之間的關係。

+0

這很有道理。非常感謝。 –

2

想想你是怎麼做到這一點的,並把它放到你的查詢中。

要得到所有你會寫的COL3值:

SELECT DISTINCT col3 FROM TABLE_NAME 

用它來通過not in條款過濾從您的選擇行:

SELECT 
    col1, col2, col3 FROM TABLE_NAME 
WHERE col2 not in (SELECT DISTINCT col3 FROM TABLE_NAME); 
+0

這很有道理。非常感謝。如果可以的話,我會接受這兩個答案。 –

+0

不用擔心,@FinnMaunsell。 – STLDeveloper