Big*_*ney 86 mysql sql syntax join
例如,如果我有一个表"Person",其列"id"引用表"Worker"中的列"id"
这两个查询之间有什么区别?它们产生相同的结果.
SELECT *
FROM Person
JOIN Worker
ON Person.id = Worker.id;
Run Code Online (Sandbox Code Playgroud)
和
SELECT *
FROM Person,
Worker
WHERE Person.id = Worker.id;
Run Code Online (Sandbox Code Playgroud)
谢谢
sat*_*esh 50
完全没有区别.
第二种表示使查询更具可读性,并使得哪种连接对应于哪种条件看起来非常清楚.
spe*_*593 32
查询在逻辑上是等效的.逗号运算符等同于[INNER] JOIN运算符.
逗号是旧式连接运算符.JOIN关键字稍后添加,并且受到青睐,因为它还允许OUTER连接操作.
它还允许将连接谓词(条件)与WHERE子句分隔成ON子句.这提高了(人类)可读性.
vel*_*ije 12
除了更好的可读性之外,还有一种情况是显式连接表更好而不是以逗号分隔的表.
让我们看一个例子:
Create Table table1
(
ID int NOT NULL Identity(1, 1) PRIMARY KEY ,
Name varchar(50)
)
Create Table table2
(
ID int NOT NULL Identity(1, 1) PRIMARY KEY ,
ID_Table1 INT NOT NULL
)
Run Code Online (Sandbox Code Playgroud)
以下查询将为我提供两个表中的所有列和行
SELECT
*
FROM table1, table2
Run Code Online (Sandbox Code Playgroud)
以下查询将为我提供第一个表中的列,其中包含名为"table2"的表别名
SELECT
*
FROM table1 table2
Run Code Online (Sandbox Code Playgroud)
如果您在逗号分隔的连接中错误地忘记了逗号,则第二个表会自动转换为第一个表的表别名.并非在所有情况下,但有机会这样的事情
使用 JOINS 使代码更易于阅读,因为它是不言自明的。
在速度上没有区别(我测试过)并且执行计划是相同的
如果查询优化器的工作正常,那么这些查询之间应该没有区别。它们只是指定相同所需结果的两种方法。
| 归档时间: |
|
| 查看次数: |
69478 次 |
| 最近记录: |