gpt4 book ai didi

sql - 限制 LEFT JOIN

转载 作者:行者123 更新时间:2023-12-04 17:42:25 26 4
gpt4 key购买 nike

我有一个表,我们称它为“a”,用于在涉及很多表的 View 中的左连接。但是,如果“a”行也与另一个表“b”连接,我只想返回它们。所以现有的代码看起来像

SELECT ....
FROM main ...
...
LEFT JOIN a ON (main.col2 = a.col2)

但它返回了太多行,特别是那些 a 在 b 中没有匹配项的行。我试过
SELECT ...
FROM main ...
...
LEFT JOIN (
SELECT a.col1, a.col2
FROM a
JOIN b ON (a.col3 = b.col3)) ON (a.col2 = main.col2)

这给了我正确的结果,但不幸的是“解释计划”告诉我这样做最终会强制对 a 和 b 进行全表扫描,这使事情变得很慢。我的一位同事建议在 b 上使用另一个 LEFT JOIN,但这不起作用,因为它在 b 存在时给了我行,但不会停止从 a 返回在 b 中不匹配的行。

有什么方法可以将 main.col2 条件放在 sub-SELECT 中,从而摆脱全表扫描?或者其他一些方式来做我想做的事?

最佳答案

SELECT ...
FROM ....
LEFT JOIN ( a INNER JOIN b ON .... ) ON ....

关于sql - 限制 LEFT JOIN,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/757957/

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