亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

檢索每個組中的最后一條記錄 - MySQL

檢索每個組中的最后一條記錄 - MySQL

MYYA 2019-05-23 13:15:35
檢索每個組中的最后一條記錄 - MySQL有一個表messages包含如下所示的數據:Id   Name   Other_Columns-------------------------1    A       A_data_12    A       A_data_23    A       A_data_34    B       B_data_15    B       B_data_26    C       C_data_1如果我運行查詢select * from messages group by name,我會得到如下結果:1    A       A_data_14    B       B_data_16    C       C_data_1什么查詢將返回以下結果?3    A       A_data_35    B       B_data_26    C       C_data_1也就是說,應返回每組中的最后一條記錄。目前,這是我使用的查詢:SELECT  *FROM (SELECT  *FROM messagesORDER BY id DESC) AS xGROUP BY name但這看起來非常低效。還有其他方法可以達到相同的效果嗎?
查看完整描述

3 回答

?
慕森王

TA貢獻1777條經驗 獲得超3個贊

使用子查詢返回正確的分組,因為你已經到了一半。

試試這個:

select
    a.*from
    messages a    inner join 
        (select name, max(id) as maxid from messages group by name) as b on
        a.id = b.maxid

如果不是id你想要的最大值:

select
    a.*from
    messages a    inner join 
        (select name, max(other_col) as other_col 
         from messages group by name) as b on
        a.name = b.name        and a.other_col = b.other_col

這樣,您可以避免子查詢中的相關子查詢和/或排序,這些子查詢往往非常慢/效率低。


查看完整回答
反對 回復 2019-05-23
  • 3 回答
  • 0 關注
  • 1058 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號