gpt4 book ai didi

mysql - SELECT from table WHERE value across multiple rows

转载 作者:行者123 更新时间:2023-11-29 03:59:47 27 4
gpt4 key购买 nike

我有一个将产品映射到类别的表格。每个产品可以属于多个类别,因此一个产品可以有多个具有不同类别 ID 的行。它看起来像这样:

CREATE TABLE `products_mid` (
`id` int(11) UNSIGNED NOT NULL,
`product_id` int(11) UNSIGNED NOT NULL DEFAULT '0',
`category_id` int(11) UNSIGNED NOT NULL DEFAULT '0'
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

如果我想获取属于 A 类别的所有产品 ID 的列表,这很简单——但是有没有办法获取所有 product_id属于类别 AB C 尽可能简单?

最佳答案

更好的方法是使用 HAVING 子句,而不是 WHERE 子句。按 product_id 分组,并选择三个类别中每个类别的计数都为非零的行,如下所示:

SELECT product_id
GROUP BY product_id
HAVING SUM(CASE WHEN category_id=1 THEN 1 ELSE 0 END) > 0
AND SUM(CASE WHEN category_id=2 THEN 1 ELSE 0 END) > 0
AND SUM(CASE WHEN category_id=3 THEN 1 ELSE 0 END) > 0

以上语句选择了属于 ID 为 1、2 和 3 的所有三个类别的产品的 product_id

关于mysql - SELECT from table WHERE value across multiple rows,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42708356/

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