想到用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>