CROSS JOIN什么时候有用?

时间:2015-10-20 11:31:40

标签: mysql comma cross-join

当我阅读有关CROSS JOIN的文档时,我想知道,因为它似乎毫无意义。您只需使用逗号,即可。我测试了它(好几次),这些查询的结果完全相同:

// one
SELECT * FROM table1 CROSS JOIN table2

// two
SELECT * FROM table1, table2

无论如何,我想知道:使用CROSS JOIN代替,是否有合理的理由?

2 个答案:

答案 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