- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在 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/
Feel free to skip straight to TL/DR if you're not interested in details of the question 简短的序言: 我最近决定
我一直在阅读 A Tour of Go学习Go-Lang到目前为止一切顺利。 我目前在 Struct Fields类(class),这是右侧的示例代码: package main import "fm
Last time I got confused顺便说一下PowerShell急切地展开集合,基思总结了它的启发式如下: Putting the results (an array) within a
我是一名优秀的程序员,十分优秀!