mysql:表别名不存在

时间:2011-10-24 00:21:21

标签: mysql

所以我的数据库中有一个表(我称之为Test)。该表名为Items,并且具有名为itemID的int列和当前名为的decimal(8,2)列。它们分别代表商品的唯一ID和商品的当前出价。当前列可以为NULL,因为可能尚未对项目进行出价。

我的目标是获取具有至少一个出价的当前最高出价的项目的itemID。我有一个mysql查询,如下所示:

select itemID
from (select itemID from Items where numBids > 0) as b
where currently = (select max(currently) from b);

当我在mysql中执行此操作时,我收到一条错误消息:

ERROR 1146 (42S02): Table 'Test.b' doesn't exist

有谁可以解释这里发生了什么?我有一段时间没用过mysql所以我生锈了。为了完成这样的事情,我是否必须自己加入项目?任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:4)

最后一个子查询没有看到别名“b”。试图使用那个复杂的查询

SELECT itemID
FROM Items
WHERE numBids > 0
ORDER BY currently DESC 
LIMIT 1

处理多个项目具有当前最高出价的情况:

SELECT itemID
FROM Items
WHERE numBids > 0
  AND currently =
      ( SELECT MAX(currently)
        FROM Items
        WHERE numBids > 0 
      )

答案 1 :(得分:1)

问题是您无法使用b克劳索的select内的where