如何在MySQL中命名通配符选择列?

时间:2012-04-01 17:59:06

标签: mysql left-join wildcard

我将简化我的场景 - 我有这两个表:

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和name)的列。我知道我可以使用'AS'关键字来指定一列的别名。但是,我需要指定每个选定的列,但我必须使用'*'通配符。

有什么办法可以用'*'通配符设置别名列名吗?像这样:

... table_B_one。* AS table_B_one_ * ...

1 个答案:

答案 0 :(得分:2)

不,没有办法使用通配符设置别名。你需要明确。

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

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