我将简化我的场景 - 我有这两个表:
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_ * ...
答案 0 :(得分:2)
不,没有办法使用通配符设置别名。你需要明确。
如果您的SQL是动态生成的,那么显式使用所有必需别名的成本非常小 - 只需将生成正确别名的代码放入生成SQL的代码中即可。
明确使用别名将有助于代码的可读性 - 这就是别名的含义。但是,我很好奇:如果动态生成SQL,为什么还要使用别名?