gpt4 book ai didi

mysql - 在 select with join 和 where 子句中苦苦挣扎

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

我正在通过 phpmyadmin 运行一些 SQL。我正在尝试使用 2 个表进行查询。第一个 xlsws_product 包含所有产品信息,第二个 xlsws_category_assn 包含两列,一个是类别 ID,另一个是产品 ID。类别名称在第三个表中,但我不需要它们。

我要做的是从产品表中选择 ID 为 210、218 和 370 的类别中的行。这是我目前尝试的方法:

SELECT *
FROM xlsws_product
JOIN xlsws_product_category_assn ON xlsws_product.id = xlsws_product_category_assn.product_id
WHERE
xlsws_product_category_assn.category_id = '210' OR '218' OR '370'`

此结果为我提供了来自一堆类别的 24090 行,这些类别中应该只有少数行。奇怪的是产品表中有 56474 行,所以我不确定结果是如何被过滤的。

只是为了它,我尝试使用以下查询将我的查询限制为仅一个类别 ID:

SELECT *
FROM xlsws_product
JOIN xlsws_product_category_assn ON xlsws_product.id = xlsws_product_category_assn.product_id
WHERE xlsws_product_category_assn.category_id = '210'

这产生了零行...

我确信我遗漏了一些简单的东西,但在花了一段时间寻找解决方案后,我就是想不通。感谢您的帮助。

最佳答案

如果您需要查找 category 中的所有数据'210' OR '218' OR '370'

你可以这样做

SELECT * FROM 
xlsws_product xp
JOIN xlsws_product_category_assn xpc ON xp.id = xpc.product_id
WHERE
xpc.category_id in (210,218,370)

如果您需要查找具有所有 3 个给定类别的产品,您可以这样做

SELECT * FROM 
xlsws_product xp
JOIN xlsws_product_category_assn xpc ON xp.id = xpc.product_id
WHERE
xpc.category_id in (210,218,370)
group by xp.id having count(*) = 3

关于mysql - 在 select with join 和 where 子句中苦苦挣扎,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29735899/

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