2011-04-20 74 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的 - 它只是一種不同的連接方式。您在上面寫的那個是較新的,並且提供了一個