私はこのような何かを持っているところ、私はテーブルfoo
を持っていると仮定すると:MySQLで各ユーザーの最新Nでないすべての行を削除するにはどうすればよいですか?
id
は、user_id
、timestamp
は、some_value
私は何をしたいユーザーあたり、最新のN ないすべての行を削除しています。
削除自体はで扱うことができます:
DELETE FROM foo WHERE id NOT IN (...)
ので、あなたに問題を修正してください可能性:どのように私は、行の各ユーザーについて(あまりがあるかもしれません)、最新のNを得るのですか。つまり、Uユーザーがいれば、N * U行になる可能性がありますので、LIMIT
は実際に動作しません。あなたの数でNを交換
DELETE FROM foo WHERE id NOT IN (...) ORDER BY timestamp ASC LIMIT (Count - N)
:これを試して次に
SELECT COUNT(*) as total FROM foo WHERE id NOT IN (...)
:
私は申し訳ありませんがわかりません、私はそれぞれのuser_idのN行を意味する – tliff
この場合、クエリを次のように変更します。Where id = user_id。私はあなたが配列内のすべてのIDのリストを持っていると仮定し、各IDをループして、このクエリをそれらのために実行させます –