MySQL别名和表名

3

我尝试执行以下查询:

SELECT * FROM `pd_cheque` as p WHERE `pd_cheque`.etype='pd_issue'

我遇到了以下错误:

#1054 - 在'where clause'中未知的列 'pd_cheque.etype'

经过“一些”实验,我得到了以下可行的查询语句:

SELECT * FROM `pd_cheque` as p WHERE p.etype='pd_issue'

为什么MySQL不允许我执行第一个查询? 一旦为表指定了别名,是否就不能再用表名引用它?

1
回答你的问题:是的。 - Melon
2个回答

4
在第一个查询中:
SELECT *
FROM `pd_cheque` as p
WHERE `pd_cheque`.etype='pd_issue'

您使用表别名重命名了表。在查询的其他位置,您需要使用p来引用该表。因为表已经被重命名,所以查询不再识别原始表名。

自连接需要使用表别名。例如:

select
from t join
     t
     on t.id = t.otherid

如果没有别名,这就没有意义:

select
from t join
     t tother
     on tother.id = t.otherid;

此外,表别名使查询更易于阅读。

1
因为当您为表定义别名时,就像您所做的那样。
`pd_cheque` as p

那么您就必须使用它,而不是原始表名。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接