开发者社区> 问答> 正文

SELECT查询从每个组返回1行?mysql

这是一个产品表,有几百万条记录。

在此处输入图片说明

我想列出记录如下: 通常我使用:

SELECT id, product_name, store_id FROM product GROUP BY store_id ORDER BY id.

当前存在SQL性能问题。我需要SQL查询来输出这样的结果。

在此处输入图片说明

展开
收起
保持可爱mmm 2020-05-17 20:02:54 927 0
1 条回答
写回答
取消 提交回答
  • 有很多解决方案,我建议一个方法是加入一个子查询,该子查询分别获取每个子查询的最新信息ID(假定该AUTO_INCREMENT列为ed)store_ID。

    SELECT a.* FROM tableName a INNER JOIN ( SELECT store_ID, MAX(ID) max_ID FROM tableName GROUP BY store_ID ) b ON a.store_ID = b.store_ID AND a.ID = b.max_ID SQLFiddle演示 为了获得更好的性能,请确保在这些列上有一个索引:ID和store_id。

    更新1

    如果您希望每个记录都有限制,请在下面使用此方法,

    SELECT ID, product_Name, store_ID FROM tableName a WHERE ( SELECT COUNT(*) FROM tableName b WHERE b.store_ID = a.store_ID AND b.ID >= a.ID ) <= 2;来源:stack overflow

    2020-05-17 20:06:57
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
搭建电商项目架构连接MySQL 立即下载
搭建4层电商项目架构,实战连接MySQL 立即下载
PolarDB MySQL引擎重磅功能及产品能力盛大发布 立即下载

相关镜像