簡體   English   中英

使用LEFT JOIN時如何避免列名沖突

[英]How to avoid colliding column names when using a LEFT JOIN

我有表A,表B和表C。使用表A中的值,我想從表B和表C中選擇內容。

所以我這樣寫:

'SELECT * FROM a LEFT JOIN b ON a.w = b.x LEFT JOIN c ON a.y = c.z';

問題是我在三個表中有沖突的列名,最后一個表的列名覆蓋了第二個。

如何解決此問題,我嘗試使用AS關鍵字,但無法使其正常工作,例如:

'SELECT * FROM a LEFT JOIN b AS bb ON a.w = bb.x LEFT JOIN c AS cc ON a.y = cc.z';

但這不起作用。 也許LEFT JOIN不是最佳選擇? 我需要得到的是:

a_id: u
a_name: v
b_id: w
b_name: x
c_id: y
c_name: z

如您所見,數組/對象在每個表中都有一個前綴( table name + _ ),因此不會發生沖突。

希望我很清楚,如果不是這樣,請告訴我,以便我可以編輯帖子。 謝謝。

您需要分別為每個列名稱提供別名:

SELECT a.id AS a_id, a.name AS a_name,
       b.id AS b_id, b.name AS b_name,
       c.id AS c_id, c.name AS c_name
FROM a 
LEFT JOIN b ON a.w = b.x 
LEFT JOIN c ON a.y = c.z

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM