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.在我的數據庫中有一列包含了很多表格。有沒有辦法通過只命名該列一次來查詢多個表?
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.在我的數據庫中有一列包含了很多表格。有沒有辦法通過只命名該列一次來查詢多個表?
您可以使用NATURAL JOIN
根據具有相同名稱的列自動連接表。但是,您需要確保jid
將是唯一具有相同名稱的列,否則您將無法獲得所需的結果。
NATURAL JOIN是JOIN操作,它根據兩個正在連接的表中的公共列爲您創建隱式連接子句。通用列是兩個表中具有相同名稱的列。
SELECT * FROM a
NATURAL JOIN b
NATURAL JOIN c;
拼寫出的實際命令會給你一個upvote和一個綠色的複選標記。 – ubershmekel
這裏沒有太多內容,但我增加了一個例子。 – wvdz
我寧願顯式定義用於連接行的列,但這樣做。謝謝。 – ubershmekel
你有多懶惰? :-)就我個人而言,我發現使用混淆,所以我總是把它寫出來。 – Strawberry
該longhand版本容易出錯,並且在涉及多個長命名錶格時可能會非常失控。 – ubershmekel