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

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

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上建立复合索引

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

相关文章:

你感兴趣的文章:

标签云: