MySQL别名和表名

时间:2014-01-27 13:03:04

标签: mysql sql database relational-database

我尝试执行以下查询:

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

它给了我以下错误:

  

#1054 - 'where子句'

中的未知列'pd_cheque.etype'

在“一些”实验之后,我得到了以下查询:

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

为什么MySQL不允许我执行第一个查询? 表名一旦分配了别名,就不能再使用表名进行引用吗?

2 个答案:

答案 0 :(得分:3)

在第一个查询中:

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 :(得分:0)

因为当您为表定义别名时,就像您一样

`pd_cheque` as p

然后你必须使用它而不是原始的表名。