gpt4 book ai didi

SQL 内连接。 ON 条件与 WHERE 子句

转载 作者:行者123 更新时间:2023-12-02 11:51:56 25 4
gpt4 key购买 nike

我正忙于将使用旧样式语法的查询转换为新的联接语法。我的查询的实质如下:

原始查询

SELECT i.*  
FROM
InterestRunDailySum i,
InterestRunDetail ird,
InterestPayments p
WHERE
p.IntrPayCode = 187
AND i.IntRunCode = p.IntRunCode AND i.ClientCode = p.ClientCode
AND ird.IntRunCode = p.IntRunCode AND ird.ClientCode = p.ClientCode

新查询

SELECT  i.*
FROM InterestPayments p
INNER JOIN InterestRunDailySum i
ON (i.IntRunCode = p.IntRunCode AND i.ClientCode = p.ClientCode)
INNER JOIN InterestRunDetail ird
ON (ird.IntRunCode = p.IntRunCode AND ird.IntRunCode = p.IntRunCode)
WHERE
p.IntrPayCode = 187

在此示例中,“原始查询”返回 46 行,而“新查询”返回超过 800 行

有人可以向我解释一下其中的区别吗?我假设这些查询是相同的。

最佳答案

问题在于您加入 InterestRunDetail。您将加入 IntRunCode 两次。

正确的查询应该是:

SELECT  i.*
FROM InterestPayments p
INNER JOIN InterestRunDailySum i
ON (i.IntRunCode = p.IntRunCode AND i.ClientCode = p.ClientCode)
INNER JOIN InterestRunDetail ird
ON (ird.IntRunCode = p.IntRunCode AND ird.ClientCode = p.ClientCode)
WHERE
p.IntrPayCode = 187

关于SQL 内连接。 ON 条件与 WHERE 子句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11158043/

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