一千萬個為什麽

搜索

在單個查詢中從MySQL中選擇唯一值

我需要從數據庫中選擇只有一列具有特定值的所有行。也就是說,如果兩行的“ABC”作為列任意的值,則不返回它們。

我希望能夠清楚地理解我所要求的內容。使用MySQL的 DISTINCT 關鍵字對我需要做的事情是不可行的,因為使用它需要多次查詢。我希望能夠在一個漂亮,緊湊的查詢中執行此操作,因為它將被頻繁執行。我正在擴展我的應用程序以允許更高程度的並發性,並且我當前的代碼不再削減它。

目前,我正在使用 DISTINCT 來選擇相關列的每個唯一值,然後檢查另一個查詢中的每個值以查看它們是否只存在一次。如果是這樣,保留它,如果沒有,扔掉它。當然有更謹慎的方法來解決這個問題?

謝謝。

最佳答案

SELECT * FROM table1 
GROUP BY the_column_that_must_be_unique
HAVING COUNT(*) = 1

要只選擇重復的值,然後只選擇最新的值,這樣我們就可以拋出這些值,讓我們簡單地調用 the_column_that_must_be_unique :-)

SELECT t1.* FROM table1 t1
INNER JOIN table1 t2 ON (t1.u = t2.u AND t1.id > t2.id)  

請註意,我假設id為自動遞增的整數id,因此較大的id表示較新的項。如果那不是真的那麽做

SELECT t1.* FROM table1 t1
INNER JOIN table1 t2 ON (t1.u = t2.u AND t1.id <> t2.id)
WHERE t1.atimestamp > t2.atimestamp  

轉載註明原文: 在單個查詢中從MySQL中選擇唯一值