我正在对MySQL数据库执行SQL,并try 编写命令来删除表中的所有行.当我运行"Delete from MyTable"时,我收到错误1175,因为默认情况下打开了一个安全特性,强制您在主键上指定一个WHERE子句.

我可以关闭这个特性,但我有点喜欢它,所以我正在try 修改我的命令,通过添加WHERE子句来达到同样的效果.所以,这是可行的:

DELETE FROM MyTable WHERE MyID > 0

删除myid大于零的所有行,但我正在寻找一个真正通用的行,它可以适用于任何myid值.我试过这些

DELETE FROM MyTable WHERE MyID = ANY

DELETE FROM MyTable WHERE MyID = *

但它们是语法错误.WHERE子句上的文档说它只接受=,<,>,>=,<=,<=,<>,在、Like和IN之间,但看起来不接受任何东西.

对于接受任何值的WHERE条件,是否有适当的语法?

谢谢.

推荐答案

使用

 TRUNCATE MyTable;

然后,您不需要任何条件,因为您应该具有删除权限

TRUNCATE TABLE清空表.它需要DROP特权.从逻辑上讲,TRUNCATE TABLE类似于删除所有行的DELETE语句,或一系列DROP TABLE和CREATE TABLE语句.

manual

Mysql相关问答推荐

嵌套MySQL语句问题

用于将具有多个状态更改日期列的单行转换为具有状态和时间戳的多行的SQL查询

使用JSON_CONTAINS搜索多个值的原理

当日期附加到MySQL后,如何按日期说明排序?

数组上的MySQL、JSON_CONTAINS用法

可以优化这个带有重复WHERE子句的查询吗?

mysql 获取每个单词的第一个字母

按唯一列排序,但保持匹配的列在一起

在带有 D.I 的 .NET AWS Lambda 中使用 MySql.Data

在 MYSQL 8 中的 JSON 字段上的 SELECT 中返回所有键及其数组项

sequelize 中最好的更新方法是什么

MySQL - 考虑到所有前几天,每天计算唯一用户

为什么从我的 SQL 查询中删除 BINARY 函数调用会如此显着地改变查询计划?

mysql 5.5;可以从记录中排除表吗?

mysql从另一个表中 Select 不相等的值

MySQL 视图

MySQLi count(*) 总是返回 1

错误 1396 (HY000): 'user'@'localhost' 的操作 DROP USER 失败

在 MySQL 中检测 utf8 损坏的字符

MySQL - 在 MySQL UPDATE 或 SELECT 查询中使用 If Then Else