2011-04-20 68 views
0

我记得读书的地方/被告知后面/发明了一种传闻(^_^)两个下列查询是在MySQL服务器幕后相同:MySQL的JOIN场景

SELECT * 
FROM a 
JOIN b 
ON a.id = b.id 

SELECT * 
FROM a, b 
WHERE a.id = b.id 

这是真的吗?如果是这样,是否比其他条款更好? (如解析效率或标准符合性)

+0

[内连接相比交叉连接的性能]可能的重复(http://stackoverflow.com/questions/670980/performance-of-inner-join-compared-to-cross-join) – soulmerge 2011-04-20 07:19:24

+0

可能重复的[ SQL离开连接与FROM行上的多个表?](http://stackoverflow.com/questions/894490/sql-left-join-vs-multiple-tables-on-from-line) – 2011-04-20 07:20:54

+0

oops ...应该已经花了更多时间搜索:) – daniel 2011-04-21 07:48:47

回答

1

事实上这是事实。第一个查询依据SQL-89标准,第二个查询依据SQL-92。

SQL-92标准引入INNER JOIN .. ONOUTER JOIN .. ON为了替换SQL-89的更复杂的(?)语法。

外部联接在SQL-89将是:

SELECT ... 
FROM t1, t2 
WHERE t1.id *= t2.id 

凡在SQL-92这将是

FROM t1 OUTER JOIN t2 ON t1.id = t2.id 

我也喜欢SQL-89在SQL-92半晌,但我认为SQL Server 2008 compability删除了对SQL-89连接语法的支持。

0

是的,这些是相同的。但它不是特定于Mysql的 - 它只是一种不同的连接方式。您在上面写的那个是较新的,并且提供了一个