【问题标题】:MySQL alias and Table nameMySQL别名和表名
【发布时间】:2014-02-18 08:06:22
【问题描述】:

我尝试执行以下查询:

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 不让我执行第一个查询? 一个表名,一旦分配了别名,就不能再用该表名引用吗?

【问题讨论】:

  • 回答你的问题:是的

标签: mysql sql database relational-database


【解决方案1】:

在第一个查询中:

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;

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

【讨论】:

    【解决方案2】:

    因为当您为表定义别名时,就像您所做的那样

    `pd_cheque` as p
    

    那么您必须使用它来代替原来的表名。

    【讨论】:

      猜你喜欢
      • 2020-06-13
      • 2014-09-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多