所以我的数据库中有一个表(我称之为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所以我生锈了。为了完成这样的事情,我是否必须自己加入项目?任何帮助将不胜感激。
答案 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
。