gpt4 book ai didi

mysql - SELECT 查询从每组返回 1 行

转载 作者:IT王子 更新时间:2023-10-29 00:38:54 25 4
gpt4 key购买 nike

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

enter image description here

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

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


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

enter image description here

最佳答案

有很多方法可以解决这个问题,我推荐的方法是加入一个子查询,它单独获取最新的 ID(假设该列是 AUTO_INCREMENTed) 为每个 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

为了获得更好的性能,请务必在这些列上建立索引:IDstore_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;

关于mysql - SELECT 查询从每组返回 1 行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14375099/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com