gpt4 book ai didi

mysql - WHERE 子句返回结果而不考虑子查询

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

我使用子查询从类别及其下的所有子类别返回产品。这是它的 sql 查询:

SELECT
ca.categoryid, p.*, FLOOR(prodratingtotal/prodnumratings) AS prodavgrating, 0 AS prodgroupdiscount
FROM
cart_categoryassociations ca, cart_products p
WHERE
p.prodvisible=1 AND p.prodfeatured=1 AND (ca.categoryid=47 OR ca.categoryid IN (SELECT categoryid FROM cart_categories WHERE catparentid=47))

当我运行它时,它仅基于 p.prodvisible=1 AND p.prodfeatured=1 部分返回结果,忽略 (ca.categoryid=47 OR ca.categoryid IN (SELECT CategoryID FROM cart_categories WHERE catparentid=47)) 部分。

(换句话说,它会带回系统中的所有特色产品,即使它们不属于子查询中提到的类别)

P.S:我尝试单独运行括号中的部分,它返回正确的类别。

MySQL 版本 5.0.8。

最佳答案

WHERE
p.prodvisible=1 AND p.prodfeatured=1 AND (ca.categoryid=47 OR ca.categoryid IN (SELECT categoryid FROM cart_categories WHERE catparentid=47))

我认为这会返回 cart_products 中与 p.prodvisible=1 AND p.prodfeatured=1 匹配的所有行,对于与 (ca.categoryid=47 OR 匹配的每一行ca.categoryid IN (SELECT CategoryID FROM cart_categories WHERE catparentid=47)) 子条款。

cart_products 没有某种 cart_categories 的外键吗?那么你可以添加:

AND p.categoryid=ca.categoryid

关于mysql - WHERE 子句返回结果而不考虑子查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10139044/

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