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

group by分組查詢(xún)最新記錄

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

 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é)果是
圖片描述

第二條查詢(xún)語(yǔ)句:

 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é)果是
圖片描述

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

回答
編輯回答
尋仙

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;
自增主鍵越大——時(shí)間越大,可以考慮下這樣的思路

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

給你個(gè)我的示例,你自己處理一下:

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