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

Fro*_*dik 5 mysql wildcard left-join

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

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)
Run Code Online (Sandbox Code Playgroud)

然后我有这个查询:

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
Run Code Online (Sandbox Code Playgroud)

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

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

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

D M*_*Mac 2

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

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

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