如何在MySQL中使用自动表别名生成查询结果?

时间:2019-03-07 00:59:25

标签: mysql column-alias

MySQL版本10(MariaDB)。 PHP 5.6.3 libmysql 5.1.73

使用Oracle已经有一段时间了,但是我隐约记得,Oracle确实完成了本示例中的预期。我可能会误会,或者MySQL可能没有做同样的事情...为该问题创建了示例,因此,如果您看到语法问题,则与此相关。

假设这样的简单模式:

Table COUNTRY
ID
NM

Table PROVINCE
ID
NM
CTID

我希望这个查询:

SELECT * FROM PROVINCE P JOIN COUNTRY C ON C.ID = P.CTID

将产生以下输出:

P.ID | P.NM | P.CTID | C.ID | C.NM

不幸的是,输出没有表别名,结果中缺少所选表中联接表中的列(结果中仅一个ID列)。像这样:

ID | NM | CTID

是否可以获取上面显示的别名输出?还是有其他方法可以无需而在查询中显式地使用结果中的所有五列?而不必在查询中显式使用诸如P.ID as P_ID之类的东西?

1 个答案:

答案 0 :(得分:0)

MySQL不会像这样创建合格的别名。如果未明确命名别名,则如果选择列表在多个表中包含具有相同名称的列,则结果中将具有重复的列名称。

您不必为 all 列创建别名,只需要为它们区分即可。

您不必放弃通配符,但您应该将通配符限制为不需要为其创建别名的特定表。

SELECT C.*, P.ID AS P_ID, P.NM AS P_NM
FROM PROVINCE P JOIN COUNTRY C ON C.ID = P.CTID