首先,为可怕的标题道歉,我想不出一个更好的方式来表达我的问题。 (随意建议更好的替换)MySQL更新 - 选择性更新
基本上我有一个“计数”列的表。 我想将所有计数重置为零,除了具有最高值的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列或主键列? – MikeTWebb 2010-09-01 21:22:17
是的,主键 – Chris 2010-09-01 21:25:46
@Chris ...看起来像@Wadhi已经回答了。 – MikeTWebb 2010-09-01 21:27:06