gpt4 book ai didi

sql - Join 或 Where 子句方法在限制结果集方面是否更有效?

转载 作者:行者123 更新时间:2023-12-01 08:18:45 26 4
gpt4 key购买 nike

我需要限制基于 Col1 的 SELECT 语句的结果集具有一对多的潜在值。例如,我想返回 Col1 等于 1、2 和 3 的值的所有行。

到目前为止,我有两种不同的方法来限制结果集:

方法#1

Inner Join Table1 On (Table2.ColA=Table1.ColA) And (Col1=1 And Col1=2 And Col1=3)

方法#2
Inner Join Table1 On Table2.ColA=Table1.ColA
Where (Col1=1 And Col1=2 And Col1=3)

这些方法中的一种是首选还是有更有效的替代方法?这些值是动态的,并在每次调用时传递给存储过程。

谢谢,
克里斯

最佳答案

内连接

在处理 INNER JOIN 时,对要连接的表的过滤是否遵循 ON 无关紧要。子句,或出现在 WHERE子句——它将产生相同的结果集。

外连接

但 OUTER JOIN 的情况并非如此......
在 OUTER JOIN 中,如果您在 ON 中指定过滤条件子句——在进行 JOIN 之前应用标准。下面是一个例子:

     FROM TABLE_1 a
LEFT JOIN TABLE_2 b ON b.cola = a.cola
AND b.col1 IN (1,2,3)

与在 WHERE 中指定条件相比,这会极大地影响结果集:
     FROM TABLE_1 a
LEFT JOIN TABLE_2 b ON b.cola = a.cola
WHERE b.col1 IN (1,2,3)

结论

重要的是你:
  • 知道区别
  • 在您的查询结构中保持一致
  • 关于sql - Join 或 Where 子句方法在限制结果集方面是否更有效?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4038769/

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