当前位置: 首页 > 面试题库 >

MySQL删除语句有限制

濮波
2023-03-14
问题内容

我正在尝试从表中删除行,但出现错误。

DELETE FROM `chat_messages` ORDER BY `timestamp` DESC LIMIT 20, 50;

我在50时收到此错误:

您的SQL语法有误;检查与您的MySQL服务器版本相对应的手册以获取正确的语法,以在第1行的“ 50”附近使用

不知道怎么了


问题答案:

您不能在DELETELIMIT子句中指定偏移量。

因此,唯一的方法是将查询重写为以下形式:

DELETE FROM `chat_messages` WHERE id IN (select id from (select id
                                           FROM `chat_messages`
                                       ORDER BY `timestamp` DESC
                                          LIMIT 20, 50) x)

假设您有主键id

UPD :您需要实现双重嵌套来欺骗mysql,因为它不允许从当前修改的表中进行选择(感谢Martin Smith)



 类似资料:
  • 在 MySQL 中,可以使用 REVOKE 语句删除某个用户的某些权限(此用户不会被删除),在一定程度上可以保证系统的安全性。例如,如果数据库管理员觉得某个用户不应该拥有 DELETE 权限,那么就可以删除 DELETE 权限。 使用 REVOKE 语句删除权限的语法格式有两种形式,如下所示: 1)第一种 删除用户某些特定的权限,语法格式如下: REVOKE priv_type [(column_

  • 从for, foreach, if..elseif...else, try...catch...finally, while...do, do...while中快速提取或删除代码 提取或删除代码的时候,被绿色选中的是要提取的内容,被红色选中的是要被删除的内容. 操作步骤: 菜单栏: Code —> Unwrap\/Remove 快捷键: Mac: command + shift + Delete

  • 我试图通过下面的SQL语句删除一些记录,但得到错误附近使用的正确语法: 有没有人知道我怎么解决错误? 我还尝试了下面的句子,在那里我得到了这个错误)附近使用的正确语法: 上面的句子在表中查找nobody ecxept本身未使用的行,该表将表链接到主表。 为了上述问题,我尝试上面的但我得到以下错误中指定目标表“TA_”以进行更新: 最后尝试了双重包装,但也不起作用,这是错误附近使用的正确语法:

  • 问题内容: 我有一个数据库的MySQL转储。其中包含DEFINER子句, 即,这些DEFINER子句位于我的CREATE VIEW和CREATE PROCEDURE语句中。有没有办法从我的转储文件中删除这些DEFINER子句? 问题答案: 我认为没有办法忽略将s 添加到转储中。但是,有一些方法可以在创建转储文件后将其删除。 在文本编辑器中打开转储文件,并用空字符串“” 替换所有出现的 使用以下命令

  • 我正在运行此查询, 这是您在图片中看到的id为19的唯一删除记录。 id的列类型是整数。