選擇鍵我有一臺這樣的
表創建:SQL:基於缺失值
key value
1 10000
1 10001
2 10001
我想選擇鍵2,因爲它具有10001而不是10000有沒有一種簡單的方法?我嘗試使用連接,但我不知道如何使聯接選擇只有缺失的值。
選擇鍵我有一臺這樣的
表創建:SQL:基於缺失值
key value
1 10000
1 10001
2 10001
我想選擇鍵2,因爲它具有10001而不是10000有沒有一種簡單的方法?我嘗試使用連接,但我不知道如何使聯接選擇只有缺失的值。
假設你正在尋找沒有所有可用value
S的key
S,你可以做,通過在整個表中的每個關鍵的DISTINCT value
S中的數量比較DISTINCT value
S上的號碼。
SELECT `key` FROM `table`
GROUP BY `key`
HAVING COUNT(DISTINCT value) < (SELECT COUNT(DISTINCT value) FROM `table`)
在行動,在SQLFiddle
觀察,如果只有你感興趣的值的一組特定的,你可以改變這種使用硬編碼值。
SELECT `key` FROM `table`
WHERE value IN (10001, 10000)
GROUP BY `key`
HAVING COUNT(DISTINCT value) < 2
對於此推廣到值的數量較多,該HAVING
子句中的號碼需要匹配的條件IN
元件的數量。
你可以簡單地這樣做:
SELECT DISTINCT t1.`key`
FROM tablename t1
WHERE t1.`key` NOT IN(SELECT `key`
FROM tablename
WHERE value = 10000);
我認爲解決這個問題的最簡單的方法就是把邏輯having
子句。以下計數的次數每個鍵出現並應用於你的邏輯:
select "key"
from t
group by "key"
having sum(value = 10000) = 0 and
sum(value = 10001) > 0;
這是使用MySQL的特徵,其中布爾表達式(value = 10000
)被視爲整數,0
是虛假和1
是真實的。因此,sum(value = 10000
)計算每個key
的值爲10000
的行數。
是不是重複鍵? – bansi
你的問題不清楚,因爲你說你想選擇密鑰2,因爲它有10001,但密鑰1也有10001. – Sharad
問題是足夠清楚:-p – Strawberry