gpt4 book ai didi

mysql - 如何获得与组组合的排序列表

转载 作者:行者123 更新时间:2023-11-29 10:44:40 26 4
gpt4 key购买 nike

我尝试获取按组排序的产品组列表。我的问题是,我只需要将一种产品放入可用的组中(0=否,1=是)并且价格最低且数量>0。

select id, group_id, price, amount, available from products
Table rows:



id group_id price amount available
1 1 100 1 1
2 1 50 1 1
3 1 25 1 0
4 2 100 2 1
5 2 200 1 1
6 2 100 2 1
7 2 50 1 1

我需要 id 为 2 和 7 的行作为结果。我的问题是在一个group_id中有多个具有相同价格的id。

有什么想法可以在没有子选择的情况下解决这个问题吗?

最佳答案

这是 ANSI 标准,应该返回您想要的内容。如果有多行匹配条件(即具有相同的最低价格),它将仅返回第一行(较低的 id)。

SELECT MIN(P.id),  P.group_id, P.price, P.amount, P.available
FROM products P
INNER JOIN
(SELECT group_id, MIN(price) AS minprice
FROM products
WHERE available=1 AND amount > 0
GROUP BY group_id
) G ON P.group_id = G.group_id AND P.price = G.minprice
GROUP BY P.group_id, P.price, P.amount, P.available
ORDER BY P.group_id

请注意,如果您有一个大型表,您可能需要对价格列建立索引(或复合索引 group_id + 价格)

在其他支持窗口函数的 RDBMS 上会更简单

关于mysql - 如何获得与组组合的排序列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44847259/

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