mysql表别名和表实名在同一个查询中

时间:2012-02-03 10:12:41

标签: mysql

在以下查询中我得到#1054 - Unknown column 'zzAir_Reservations_201201.id' in 'where clause'。那是为什么?

    SELECT `id`
    FROM
        `reservations` AS `res`
    WHERE
        `reservations`.`id`='0'

这是一个简化的查询,原始查询要复杂得多。

这在过去的某个时候有效,但我在过去几周内更新了mysql服务器,我认为这是一个新的“功能”

我知道如果没有使用别名就没有意义,但是限制原始表的使用并没有意义,因为我别名它。我在手册中找不到任何参考资料

2 个答案:

答案 0 :(得分:1)

您已为表格创建alias,并使用表格的原始名称,这就是生成错误(Error Code: 1054)的原因。

而不是

SELECT `id`
FROM
    `reservations` AS `res`
WHERE
    `reservations`.`id`='0'

使用

SELECT `id`
FROM
    `reservations` AS `res`
WHERE
    res.`id`='0'

答案 1 :(得分:-1)

我从PHP编写了大部分查询,而我常常不知道表名是什么。

所以我总是将它们别名为t1,t2等。然后我的WHERE子句总是使用t1.'a',t2.'a'等等一切正常。

e.g。

$query = "SELECT `$source_table`.`$category_field`, `$support_table`.`$subcategory_field` WHERE `$t1`.`$id_field` = `$t2`.`$id.field`;

或类似的东西。

希望你没有太多的疑问,因为听起来你的手上可能有一团糟。