2012-04-01 54 views
5

我将简化我的情况 - 我有这2个表:如何在MySQL中为通配符选择列?

table_A - id int, id_table_B_one int, id_table_B_two int, name varchar(30) 
table_B - id int, name varchar(30), description varchar(30) 

然后,我有这个疑问:

SELECT 
table_A.id, table_A.name, table_B_one.*, table_B_two.* 
FROM 
table_A 
LEFT JOIN table_B table_B_one ON table_A.id_table_B_one = table_B.id 
LEFT JOIN table_B table_B_two ON table_A.id_table_B_two = table_B.id 

我的问题是,我将获得3列具有相同的名称(ID和名称)。我知道我可以使用'AS'关键字来指定一个列的别名。但是,我需要指定每个选定的列,但我必须使用'*'通配符。

有没有什么办法可以用'*'通配符设置别名列名?事情是这样的:

... table_B_one * AS table_B_one_ * ...

+2

为什么你需要使用通配符?难道你不能拼出你想看到的所有列吗? – SingleNegationElimination 2012-04-01 18:11:18

+0

而不是'*'或'table。*',最好清楚地说明您正在选择的列。将它们全部列在'SELECT'语句中。 – 2012-04-01 18:18:26

+0

TokenMacGuy:我需要,因为SQL查询实际上是动态生成的。正如我在我的问题中指出的 - 这是非常简化的目的这个问题,但查询和它的用法在我的情况是更复杂 – Frodik 2012-04-01 18:21:55

回答

2

没有,没有使用通配符的方式设置别名。你需要明确。

如果您的SQL是动态生成的,那么对所有必要的别名进行显式计算的成本非常小 - 只需将生成正确的别名放入生成SQL的代码即可。

明确使用别名将有助于代码的可读性 - 这就是别名的可读性。然而,我很好奇:如果你的SQL是动态生成的,为什么你想要别名?