首頁  >  文章  >  後端開發  >  MySQL怎麼查詢所有使用者最新的一則資訊?

MySQL怎麼查詢所有使用者最新的一則資訊?

WBOY
WBOY原創
2016-08-04 09:21:271062瀏覽

想到用group by 但它只能顯示第一條,而不能顯示最新一條,
想加個order by time desc,可是orber by只能加在group by後面。

有什麼辦法可以查詢出group by的分組中,每組內的排序中最大或最小的一行資料?

回覆內容:

想到用group by 但它只能顯示第一條,而不能顯示最新一條,
想加個order by time desc,可是orber by只能加在group by後面。

有什麼辦法可以查詢出group by的分組中,每組內的排序中最大或最小的一行資料?

方案一: 透過同表子查詢或聯查找到最大的資料ID

<code>select * from track where id in(select max(id)  from track group by target_id);

or

select * from track where id in(select substring_index(group_concat(id order by id desc),',',1) as maxid from track group by target_id);</code>

方案二:分兩步驟查詢,php中先查詢最大ID,再透過ID數組查詢清單資料

select a.* from(select max(id) as id from info group by userid) b left join info a on a.id=b.id

把查詢結果存起來,再取

使用order by

<code>select * from ( 
    select (@mycnt := @mycnt + 1) as ROWNUM,name,age
    from tb where AGe < 20 order by name,age 
) as A where ROWNUM = 1
</code>

只懂SqlServer,這個是仿照SqlServer寫法的,可以試試

<code>SELECT a.id, a.user_id, a.info, a.create_time
    FROM (SELECT id, user_id, info, create_time FROM tbl_user 
        ORDER BY user_id, create_time DESC, id DESC) a
    GROUP BY a.user_id</code>
陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn