gpt4 book ai didi

sql - 排除匹配子查询的记录

转载 作者:行者123 更新时间:2023-12-04 14:22:10 25 4
gpt4 key购买 nike

这个问题可能有一个明显的答案,但我有一段很长的时间来解决这个问题。

考虑查询:

SELECT *FROM reports AS rJOIN reportvalues AS rv ON rv.report_id = r.report_idJOIN metrics AS m ON m.metric_id = rv.metric_idWHERE r.report_id NOT IN(    SELECT DISTINCT report_id    FROM exclude_report)

在此查询中,exclude_report 是以类似方式构造的 View 。

现在发生的情况是查询需要很长时间才能执行,大概是因为子查询正在对父查询中的每一行执行。但是,我发现没有任何其他可行的方法可以做到这一点。

哦,伟大的 SQL 向导,请指教。我真的需要一种在 SQL 中完成这一切的方法,我将在 SSRS 中使用它。

最佳答案

distinct 可能要了你的命,在使用 in 时你不需要在子查询中使用 distinct

这样更好吗?

SELECT *
FROM reports AS r
JOIN reportvalues AS rv ON rv.report_id = r.report_id
JOIN metrics AS m ON m.metric_id = rv.metric_id
WHERE NOT EXISTS (SELECT 1
FROM exclude_report e
WHERE e.report_id = r.report_id)

关于sql - 排除匹配子查询的记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2946754/

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