JOINs与许多表中的SELECT

Sop*_*rus 7 mysql join inner-join

我一直在寻找广泛,但我找不到答案,可能是因为我无法找出正确的方式来提问.所以这就是:有没有理由更喜欢这两个查询中的任何一个?

SELECT * FROM table1, table2 WHERE table1.id = table2.id;
Run Code Online (Sandbox Code Playgroud)

SELECT * FROM table1 INNER JOIN table2 ON table1.id = table2.id;
Run Code Online (Sandbox Code Playgroud)

问题源于我正在尝试优化的更复杂的查询,但我认为这两个查询包含问题的本质,并希望以这种方式询问它对其他人更有用.提前致谢.

Ben*_*oit 7

SELECT * FROM table1, table2 WHERE table1.id = table2.id;
Run Code Online (Sandbox Code Playgroud)

SELECT * FROM table1 INNER JOIN table2 ON table1.id = table2.id;
Run Code Online (Sandbox Code Playgroud)

将返回相同的结果.但是在这种情况下你应该更喜欢第二个.第一种形式仍然被广泛使用,因为Oracle长期以来不支持第二种形式.

然而,说明INNER JOIN带有意图并迫使你写一个条件因为INNER JOIN需要一个ON条款.对于较大的查询,它使查询更具可读性,并且使得跳过连接谓词变得更加困难.

另外,请注意我倾向于将第一个表单读取为:获取两个表的笛卡尔积,并且仅保留在SQL中表示为两个表中具有相同ID的行SELECT * FROM table1 CROSS JOIN table2 WHERE table1.id = table2.id;.


Mar*_*cus 5

实际上两个查询是相同的,只有两种不同的方式来编写它.就个人而言,我认为后者为用户提供了更多的可读性.