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
之类的东西?
答案 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