gpt4 book ai didi

MySql 查询优化,用 join 替换 not in subquery

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

我有一个查询,我觉得它非常庞大,可以进行优化。第一件事显然是用 join 替换 not in subquery 但它会影响我拥有的 sub-sub 查询。我会很感激关于它的建议/解决方法。

这是查询

SELECT *
FROM lastweeksales
WHERE productID = 1234
AND retailer NOT
IN (
SELECT retailer
FROM sales
WHERE productID
IN (
SELECT productID
FROM products
WHERE publisher = 123
)
AND DATE = date(now())
)

基本上,我想从上周销售的产品中获取行,其中零售商不在场但今天进行销售,但销售应该只针对某个发布商的产品。

:S:S:S

最佳答案

您可以通过 INNER JOIN 轻松地将 2 个内部子查询组合在一起。对于外部,您应该使用 LEFT OUTER 加入,然后过滤 retailer IS NULL,如下所示:

SELECT lws.*
FROM lastweeksales lws
LEFT JOIN (SELECT s.retailer
FROM sales s
JOIN products p USING (productID)
WHERE p.publisher = 123
AND s.date = date(now())) AS r
ON lws.retailer = r.retailer
WHERE r.retailer IS NULL;

关于MySql 查询优化,用 join 替换 not in subquery,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10813966/

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