首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > Mysql >

group前需取得倒序数据,有什么好方法吗?解决方法

2012-04-18 
group前需取得倒序数据,有什么好方法吗?一个产品表,有多个商家。每个商家有N个产品。要求让每个商家只能显示

group前需取得倒序数据,有什么好方法吗?

一个产品表,有多个商家。每个商家有N个产品。
要求让每个商家只能显示一个最新产品,直接group by 商家id后,结果集默认是商家的一条最早的产品。

SELECT * FROM tbl WHERE status=1 GROUP BY bizid ORDER BY level DESC;


搜索了下,找到了以下二个方法,但觉得效率都不高(原应用的sql条件太多),想请教下除此外不知还有没有更好的办法?

1、SELECT * FROM(SELECT * FROM tbl ORDER BY id DESC) tem_tpl GROUP BY bizid;

2、SELECT * FROM tbl WHERE id IN(SELECT MAX(id) FROM tbl GROUP BY bizid);

[解决办法]
参考下贴中的多种方法

http://topic.csdn.net/u/20091231/16/2f268740-391e-40f2-a15e-f243b2c925ab.html
[征集]分组取最大N条记录方法征集,及散分....
[解决办法]
SELECT * FROM products a WHERE NOT EXISTS(SELECT 1 FROM products WHERE a.`biz_id`=`biz_id` AND a.`id`<id)
在biz_id、ID上建立复合索引

热点排行