現在、データベースに1人のユーザーの100個のメッセージを保持しようとしていますが、100個のうち別のメッセージを削除しようとしています。
私のデータベースはmysqlです。私のSQLは
DELETE FROM userMessage WHERE id = ? limit 100, 9999;
しかし、私のデータベースのバージョンはこのSQLをサポートしていません。
ありがとう:)
現在、データベースに1人のユーザーの100個のメッセージを保持しようとしていますが、100個のうち別のメッセージを削除しようとしています。
私のデータベースはmysqlです。私のSQLは
DELETE FROM userMessage WHERE id = ? limit 100, 9999;
しかし、私のデータベースのバージョンはこのSQLをサポートしていません。
ありがとう:)
多分このようなもの?
DELETE FROM userMessage WHERE id not in
(SELECT id FROM userMessage uM where user_id = ? ORDER BY id DESC LIMIT 100)
一時テーブルに100レコードを選択してみませんか。次に、古いテーブルを削除し、後で一時テーブル名の名前を変更します。
一意であるid
ため、このクエリを使用できます-
DELETE t1
FROM
table1 t1
LEFT JOIN (SELECT * FROM table1 ORDER BY id LIMIT 100) t2 -- Specify your LIMIT values here
ON t1.id = t2.id
WHERE
t2.id IS NULL
このクエリは、100以降のすべてのレコードを削除します。