gpt4 book ai didi

MySql 限制行但不截断行组

转载 作者:行者123 更新时间:2023-11-29 06:04:16 25 4
gpt4 key购买 nike

我有下表

id| name     |price| groupid | category
---------------------------------------
1 | product1 | 14 | grp1 | apparel
2 | product1 | 16 | grp1 | apparel
3 | product1 | 36 | grp1 | apparel
4 | product2 | 97 | grp2 | apparel
5 | product2 | 87 | grp2 | apparel
6 | product2 | 77 | grp2 | apparel
7 | product3 | 3 | grp3 | apparel
8 | product3 | 2 | grp3 | apparel
9 | product3 | 5 | grp3 | apparel

我想按类别获取此表中的产品,并在应用层按组 ID 对它们进行分组。这是我正在使用的简单 SELECT 查询:

SELECT * FROM products
WHERE category = 'apparel'
LIMIT 0,5

现在的问题是查询截断了结果,并且没有返回 grp2 (id=6) 中的最后一项(正如人们所期望的那样)。

我想要一个查询来检测未返回组中的一个项目,同时获取该项目,然后截断结果的其余部分。基本上,我想返回一个组中的所有项目或根本不返回任何项目。

我怎样才能做到这一点?

编辑:每个组可能有 1 到 12 个项目。它是可变的。

最佳答案

这是一种实现方式:

SELECT t1.*
FROM products AS t1
JOIN (
SELECT DISTINCT groupid
FROM (
SELECT groupid
FROM products
WHERE category = 'apparel'
LIMIT 0,5) AS t
) AS t2 ON t1.groupid = t2.groupid

查询使用一个派生表,其中包含属于应用 LIMIT 时返回的行的所有 distinct groupid 值。

Demo here

关于MySql 限制行但不截断行组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42714247/

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