【发布时间】:2011-04-07 00:55:04
【问题描述】:
首先,为这个糟糕的标题道歉,我想不出更好的方式来表达我的问题。 (欢迎提出更好的替代方案)
基本上我有一个带有“计数”列的表。 我想将所有计数重置为零,但具有最高值的 10 行除外。我希望将它们重置为 0。
如何在不编写多个查询的情况下实现这一目标?
更新 我现在有如下查询
UPDATE covers AS t1
LEFT JOIN (SELECT t.cover_id
FROM covers t
ORDER BY t.cover_views DESC
LIMIT 10) AS t2 ON t2.id = t.id
SET cover_views = 0
WHERE t2.id IS NULL
我收到错误 #1054 - Unknown column 't2.id' in 'where clause' - 知道为什么吗?
我也尝试了以下相同的结果
UPDATE covers t1
LEFT JOIN (SELECT t.cover_id
FROM covers t
ORDER BY t.cover_views DESC
LIMIT 10) t2 ON t2.id = t.id
SET t1.cover_views = 0
WHERE t2.id IS NULL
【问题讨论】:
-
是否有 id 列或 Primary Key 列?
-
@Chris...看起来@Wadhi 已经回答了。
标签: php mysql sql sql-update mysql-error-1054