逗号分隔的连接和MySQL中的语法连接有什么区别?

新手上路,请多包涵

I have a table Person with a column id that references a column id in table Worker .

这两个查询有什么区别?它们产生相同的结果。

 SELECT *
FROM Person
JOIN Worker
ON Person.id = Worker.id;

SELECT *
FROM Person,
     Worker
WHERE Person.id = Worker.id;

原文由 Big Money 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 660
2 个回答

完全没有区别

第一种表示形式使查询更具可读性,并使哪个连接对应于哪个条件看起来非常清楚。

原文由 Sateesh Pagolu 发布,翻译遵循 CC BY-SA 4.0 许可协议

除了更好的可读性之外,还有一种情况是显式连接的表比逗号分隔的表更好。

让我们看一个例子:

 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
)

以下查询将为我提供两个表中的所有列和行

SELECT
    *
FROM table1, table2

以下查询将为我提供第一个表中的列,表别名为“table2”

 SELECT
    *
FROM table1 table2

如果您在逗号分隔连接中错误地忘记了逗号,则第二个表会自动转换为第一个表的表别名。并非在所有情况下,但有可能发生这样的事情

原文由 veljasije 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
logo
Stack Overflow 翻译
子站问答
访问
宣传栏