2011-08-29 129 views
1

我有,我想加入SQL連接兩個表有兩個同樣命名的列

兩個表現在我只是做:

SELECT * FROM (default_insurance) 
JOIN default_profiles ON uid = default_profiles.id 
WHERE `uid` = '1 

的問題是,無論是default_insurancedefault_profiles包含列命名爲company,我只想要一個default_insurance,但是有沒有辦法讓一個連接自動選擇來自其中一個表的列,而不必SELECT(我想要的所有列)

+4

不 - 和btw:這是一個推薦的最佳做法**總是**明確拼出你想要的列。 **請勿在生產代碼中使用** SELECT *! –

+0

你應該告訴你使用的是什麼RDBMS。 –

+0

刪除我的答案,因爲我沒有徹底讀完你的整個場景。 'NATURAL JOIN'對此無能爲力,因爲它會以通用名稱爲基礎加入。 –

回答

7

你總是可以指定你究竟需要什麼(+使用表的別名):

SELECT t1.*, t2.company AS default_insurance_company 
FROM default_profiles t1 LEFT JOIN default_insurance t2 
ON t1.uid = t2.id 
WHERE t1.uid = 1 

(MySQL的例子)

以上將返回從T1和T2還列company所有列,但對你的結果它將被命名爲default_insurance_company

1

自動編號。你需要使用像這樣:

SELECT [all columns that you want], di.company 
FROM default_insurance di 
JOIN default_profiles dp ON di.uid = dp.id 
WHERE di.uid = '1