我記得讀書的地方/被告知後面/發明了一種傳聞(^_^)兩個下列查詢是在MySQL服務器幕後相同:MySQL的JOIN場景
SELECT *
FROM a
JOIN b
ON a.id = b.id
和
SELECT *
FROM a, b
WHERE a.id = b.id
這是真的嗎?如果是這樣,是否比其他條款更好? (如解析效率或標準符合性)
我記得讀書的地方/被告知後面/發明了一種傳聞(^_^)兩個下列查詢是在MySQL服務器幕後相同:MySQL的JOIN場景
SELECT *
FROM a
JOIN b
ON a.id = b.id
和
SELECT *
FROM a, b
WHERE a.id = b.id
這是真的嗎?如果是這樣,是否比其他條款更好? (如解析效率或標準符合性)
事實上這是事實。第一個查詢依據SQL-89標準,第二個查詢依據SQL-92。
SQL-92標準引入INNER JOIN .. ON
和OUTER 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連接語法的支持。
是的,這些是相同的。但它不是特定於Mysql的 - 它只是一種不同的連接方式。您在上面寫的那個是較新的,並且提供了一個
另請參閱Wikipedia coverage of inner joins。有關於顯式連接和隱式連接的詳細信息。
[內連接相比交叉連接的性能]可能的重複(http://stackoverflow.com/questions/670980/performance-of-inner-join-compared-to-cross-join) – soulmerge 2011-04-20 07:19:24
可能重複的[ SQL離開連接與FROM行上的多個表?](http://stackoverflow.com/questions/894490/sql-left-join-vs-multiple-tables-on-from-line) – 2011-04-20 07:20:54
oops ...應該已經花了更多時間搜索:) – daniel 2011-04-21 07:48:47