gpt4 book ai didi

mysql - 使用 group by 时连接表的多个条件

转载 作者:行者123 更新时间:2023-11-29 06:48:33 26 4
gpt4 key购买 nike

我有两个表:

产品

id    name
1 Product 1
2 Product 2
3 Product 3

产品尺寸

id    size_id    product_id
1 1 1
2 2 1
3 1 2
4 3 2
5 3 3

所以产品 1 有两个尺寸:1、2。产品 2 有两个尺寸:1、3。产品 3 有一个尺寸:3。

我想要做的是构建一个查询,以提取同时具有尺寸 1 和尺寸 3 的产品(即产品 2)。我可以轻松地创建一个查询来提取同时尺寸为 1 和 3 的产品:

select `products`.id, `products_sizes`.`size_id`
from `products` inner join `products_sizes` on `products`.`id` = `products_sizes`.`product_id`
where products_sizes.size_id IN (1, 3)
group by products.id

当我运行这个查询时,我得到了产品 1、产品 2 和产品 3。

重申一下,我只想取回产品 2。我试过使用 HAVING 子句,弄乱了 $id IN GROUP_CONCAT(...) 但我什么也没得到工作。提前致谢,伙计们。

最佳答案

由于您同时需要 1 和 3,因此您需要COUNT IN (1, 3)size_id 并要求结果为 2:

SELECT p.id AS id, p.name AS name
FROM products p, products_sizes s
WHERE p.id = s.product_id AND s.size_id IN (1, 3)
GROUP BY s.product_id
HAVING COUNT(DISTINCT s.size_id) = 2;

查看 demo here .让我知道它是否适合您。

关于mysql - 使用 group by 时连接表的多个条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17100360/

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