[英]How can I avoid a sub-query?
這是我的表:
ID KEY VALUE
1 alpha 100
2 alpha 500
3 alpha 22
4 beta 60
5 beta 10
我正在嘗試檢索所有KEY
-s的列表及其最新值( ID
最大值):
ID KEY VALUE
3 alpha 22
5 beta 10
在MySQL中我使用此查詢,這是無效的:
SELECT temp.* FROM
(SELECT * FROM t ORDER BY id DESC) AS temp
GROUP BY key
在這種情況下是否可以避免子查詢?
使用INNER JOIN加入您的最大ID。
SELECT t.*
FROM t
INNER JOIN (
SELECT ID = MAX(ID)
FROM t
GROUP BY
key
) tm ON tm.ID = t.ID
假設ID列已編入索引,這可能與其獲得的速度一樣快。
這是討論該主題的mysql文檔頁面 。
它提出了三種不同的選擇。
唯一不涉及子查詢的是:
SELECT t1.id, t1.k, t1.value
FROM t t1
LEFT JOIN t t2 ON t1.k = t2.k AND t1.id < t2.id
WHERE t2.k IS NULL;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.