2011-08-29 130 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