簡體   English   中英

MySQL-如何獲取按特定字段分組的最新行值?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM