最初に、ひどいタイトルについてお詫びします。私の問題を明確にするためのより良い方法を考えることができませんでした。(より良い代替案を自由に提案してください)
基本的に、「カウント」列を持つテーブルがあります。上位の値を持つ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