100后从表中删除mysql

100后从表中删除mysql,mysql,Mysql,现在,我试图在数据库中保留一个用户的100条消息,并试图从100条消息中删除另一条 我的数据库是mysql。我的sql是 DELETE FROM userMessage WHERE id = ? limit 100, 9999; 但是我的数据库版本不支持此sql 谢谢:为什么不在临时表中选择100条记录呢。然后删除旧表,然后重命名临时表名。为什么不在临时表中选择100条记录呢。然后删除旧表,然后重命名临时表名。可能是这样的吗 DELETE FROM userMessage WHERE id n

现在,我试图在数据库中保留一个用户的100条消息,并试图从100条消息中删除另一条

我的数据库是mysql。我的sql是

DELETE FROM userMessage WHERE id = ? limit 100, 9999;
但是我的数据库版本不支持此sql


谢谢:

为什么不在临时表中选择100条记录呢。然后删除旧表,然后重命名临时表名。

为什么不在临时表中选择100条记录呢。然后删除旧表,然后重命名临时表名。

可能是这样的吗

DELETE FROM userMessage WHERE id not in
(SELECT id FROM userMessage uM where user_id = ? ORDER BY id DESC LIMIT 100)

也许是这样的

DELETE FROM userMessage WHERE id not in
(SELECT id FROM userMessage uM where user_id = ? ORDER BY id DESC LIMIT 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之后的所有记录。

具有唯一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之后的所有记录。

这会起作用,但您需要这样做,其中id不在,否则它只会删除前100行。从singleMessage中删除,其中id不在,从singleMessage中选择t.id,其中ownerId=?按id订购ASC限额100作为t;这很好,谢谢:这会起作用,但您需要这样做,其中id不在,否则它只会删除前100行。从singleMessage中删除,其中id不在select t中。从singleMessage中选择id中删除id uM,其中ownerId=?按id订购ASC限额100作为t;这很好,谢谢:请参阅此讨论请参阅此讨论