鍍金池/ 問答/數(shù)據(jù)庫  網(wǎng)絡(luò)安全/ group by分組查詢最新記錄

group by分組查詢最新記錄

在網(wǎng)上也看了一些帖子,但是實際操作時仍有一些問題,麻煩各位看看究竟是什么問題。
需求是查詢tp_inventory_log表中的每項物資(goods_id)的最新記錄(add_time);
我嘗試的第一條語句:

 select * from (select goods_id, price, add_time from tp_inventory_log order by add_time desc limit 50) as til group by goods_id order by add_time desc limit 25;

顯示結(jié)果是
圖片描述

第二條查詢語句:

 select * from (select goods_id, price, add_time from tp_inventory_log order by add_time desc) as til group by goods_id order by add_time desc limit 25;

顯示結(jié)果是
圖片描述

而這兩條語句差別僅僅是第一條語句中的子查詢語句多了limit 50,結(jié)果卻大相徑庭。
1.第二條查詢語句結(jié)果未顯示4月23日的數(shù)據(jù);
2.goods_id為1081的記錄在兩條語句查詢中顯示的結(jié)果不一致,希望的結(jié)果是第一條查詢語句得到的17:14那個。

回答
編輯回答
尋仙

SELECT goods_id, price, add_time FROM tp_inventory_log WHERE 主鍵ID IN (SELECT max(主鍵ID) FROM tp_inventory_log GROUP BY goods_id) DESC LIMIT 25;
自增主鍵越大——時間越大,可以考慮下這樣的思路

2018年4月3日 14:38
編輯回答
空白格

給你個我的示例,你自己處理一下:

select group_concat(id) id_list,name from ttt group by name; 分組取出所有id,逗號分隔
select group_concat(id order by id SEPARATOR '_') from ttt group by name; 分組取出所有id,逗號分隔并排序,自定義分隔符"_"
select substring_index(group_concat(id order by id SEPARATOR '_'),'_',2) from ttt group by name; 分組取出所有id,逗號分隔并排序取前兩個,自定義分隔符"_"
注意一點:group_concat的字段是int型時需要轉(zhuǎn)成字符型,否則可能出現(xiàn)結(jié)果不對的情況
2017年9月2日 13:08