gpt4 book ai didi

mysql - 这些 SQL 查询究竟出了什么问题

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

我在 SQL 基础知识讲座中的这一部分遇到了一些问题。我认为这没有得到很好的解释,我很难在互联网上找到任何好的信息。在我的书中写道:“如果两个元组属性没有通过显式连接谓词链接,那么几乎总是一个错误:”然后是这个例子:

SELECT s.Name, c.Name AS Contact, c.Phone
FROM Suppliers AS s, ContactPersons AS c
WHERE s.Name = 'Shop Rite'
AND c.Phone LIKE '+49 351%'

没有任何地方解释什么是显式连接谓词。对我来说这个例子看起来不错。之前有一个类似的例子:

SELECT s.Name, c.Name AS Contact, c.Phone
FROM Suppliers AS s, ContactPersons AS c
WHERE s.SuppID = c.SuppID

正如书中所说,这是一个不错的加入。我真的不明白有什么区别以及 JOIN-Predicate 到底是什么?

另外,我对任何语法错误感到抱歉(我不是母语人士)

提前致谢!

最佳答案

隐式连接语法:

SELECT * 
FROM Table1 , Table2
WHERE Table1.id = Table2.id

显式连接语法:

SELECT * 
FROM Table1
JOIN Table2
ON Table1.id = Table2.id

隐式语法很好并且可以工作,但不建议这样做。它的语法令人困惑,并且可能会导致许多错误,尤其是在处理两个以上的表以及需要 LEFT JOIN(愚蠢的加号)时。您应该养成只使用正确的连接语法的习惯。

下面是一个包含 6 个表组合 LEFT JOIN 的查询示例:

SELECT <columns>
FROM YourTable,AnotherTable,ThirdTable,FourthTable,AnotherTable2,AnotherTable3
WHERE YourTable.id = AnotherTable.id(+) AND
YourTable.sec_id = AnotherTable.Sec_Id(+) AND
AnotherTable.id (+) = ThirdTable.id(+) AND
YourTable.id = FourthTable.id AND
FourthTable.Date = ...
.......

正如你所看到的,我连一半的条件都没有提出,假设可能还有更多的条件,而且看起来很糟糕。

关于mysql - 这些 SQL 查询究竟出了什么问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38292838/

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