[英]MySQL - How to get latest row value grouped by a certain field?
假設我們有一個名為表A的表
id foreign_id value
1 1 x
2 2 y
3 1 y
4 2 x
5 3 x
其中id
是主鍵
您如何獲取按外國ID分組的最新行(我們將以id
的順序為基礎)? 基本上,我想得到的是
id foreign_id value
3 1 y
4 2 x
5 3 x
試試這個查詢
SELECT t.id, t.foreign_id, t.value FROM #temp t
WHERE t.id IN (SELECT max(id) FROM #temp GROUP BY foreign_id)
將#temp
替換為您的實際表名。
試試這個查詢
SELECT max(id) AS ID, foreign_id FROM tbl
GROUP BY foreign_id
如果還需要值,那么
SELECT a.ID, a.foreign_id, a.value
FROM tbl a,
(SELECT max(id) AS ID, foreign_id
FROM tbl GROUP BY foreign_id) b
WHERE a.id = b.id AND
a.foreign_id = b.foreign_id
SELECT a.*
FROM tableName a
INNER JOIN
(
SELECT foreign_ID, max(id) max_ID
FROM tableName
GROUP BY foreign_ID
) b ON a.foreign_ID = b.foreign_ID AND
a.ID = b.max_ID
OUTPUT
╔════╦════════════╦═══════╗
║ ID ║ FOREIGN_ID ║ VALUE ║
╠════╬════════════╬═══════╣
║ 3 ║ 1 ║ y ║
║ 4 ║ 2 ║ x ║
║ 5 ║ 3 ║ x ║
╚════╩════════════╩═══════╝
`SELECT MAX(id) AS ID,
foreign_id,
value
FROM tbl
GROUP BY foreign_id ASC`
對於少量結果,此ans很好,但是如果您使用大量數據,則僅“值”字段的值可能會錯誤。 另一種方法是使您獲得適當的價值更好,這是此代碼。
`SELECT MAX(id) AS ID,
foreign_id,
value
FROM tbl
WHERE id in ( SELECT MAX(id) FROM tbl )
GROUP BY foreign_id ASC`
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.