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