当我阅读有关CROSS JOIN
的文档时,我想知道,因为它似乎毫无意义。您只需使用逗号,
即可。我测试了它(好几次),这些查询的结果完全相同:
// one
SELECT * FROM table1 CROSS JOIN table2
// two
SELECT * FROM table1, table2
无论如何,我想知道:使用CROSS JOIN
代替,
是否有合理的理由?
答案 0 :(得分:3)
除了在from
子句中从不使用逗号并始终使用显式join
语法的简单规则之外,还有一个很好的理由。问题是这两个查询之间的区别:
select *
from table1, table2;
和
select *
from table1 table2;
这些做了很多不同的事情,并且很难发现差异(特别是在更复杂的查询中)。如果您在FROM
子句中从不使用逗号,那么您的查询将更容易阅读,并且更不容易出现拼写错误和其他问题。
答案 1 :(得分:1)
考虑以下内容......
EXPLAIN EXTENDED
SELECT * FROM my_table, my_table x;
SHOW WARNINGS; (reformatted for clarity)
select test.my_table.id AS id
, test.my_table.car_id AS car_id
, test.my_table.car_model AS car_model
, test.my_table.car_features AS car_features
, test.x
. id AS id
, test.x.car_id AS car_id
, test.x.car_model AS car_model
, test.x.car_features AS car_features
from test.my_table
join test.my_table x