2014-04-21 29 views
-1

而不是Mysql的`多個表using`語法和一個連接柱

SELECT * FROM a, b, c WHERE a.jid = b.jid AND b.jid = c.jid

SELECT * FROM a JOIN b USING(jid) JOIN c USING(jid)

我想使用類似:

SELECT * FROM a, b, c USING(jid)

這看起來似乎沒有太大的方便,但是當我的查詢跨4個表格或更多時,這可能是一個真正的幫手。

I.e.在我的數據庫中有一列包含了很多表格。有沒有辦法通過只命名該列一次來查詢多個表?

+1

你有多懶惰? :-)就我個人而言,我發現使用混淆,所以我總是把它寫出來。 – Strawberry

+0

該longhand版本容易出錯,並且在涉及多個長命名錶格時可能會非常失控。 – ubershmekel

回答

2

您可以使用NATURAL JOIN根據具有相同名稱的列自動連接表。但是,您需要確保jid將是唯一具有相同名稱的列,否則您將無法獲得所需的結果。

NATURAL JOIN是JOIN操作,它根據兩個正在連接的表中的公共列爲您創建隱式連接子句。通用列是兩個表中具有相同名稱的列。

SELECT * FROM a 
NATURAL JOIN b 
NATURAL JOIN c; 
+0

拼寫出的實際命令會給你一個upvote和一個綠色的複選標記。 – ubershmekel

+0

這裏沒有太多內容,但我增加了一個例子。 – wvdz

+0

我寧願顯式定義用於連接行的列,但這樣做。謝謝。 – ubershmekel