【问题标题】:SQL WHERE Clause for any value?任何值的 SQL WHERE 子句?
【发布时间】:2023-01-21 00:46:06
【问题描述】:

我正在对 MySQL 数据库执行 SQL 并尝试编写命令来删除表中的所有行。当我运行“DELETE FROM MyTable”时,我收到错误 1175,因为默认情况下启用了一项安全功能,强制您在主键上指定 WHERE 子句。

我可以打开此功能,但我有点喜欢它,所以我试图通过添加 WHERE 子句来修改我的命令以具有相同的效果。所以,这有效:

DELETE FROM MyTable WHERE MyID > 0

在删除 MyID 大于零的所有行时,我正在寻找一个真正通用的行,它适用于任何 MyID 值。我试过这些

DELETE FROM MyTable WHERE MyID = ANY

DELETE FROM MyTable WHERE MyID = *

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

接受任何值的 WHERE 条件是否有正确的语法?

谢谢你。

【问题讨论】:

  • Where MyId = MyId
  • @斯图,or MyID is NULL
  • 或者,Where 1=1
  • 或者简单地where 1=1
  • 为什么不截断?

标签: mysql sql


【解决方案1】:

使其成为复合条件。

WHERE id IS NULL OR id IS NOT NULL;

再一次,也许安全条件是出于一个重要原因,你不应该四处走动。

【讨论】:

  • 由于 MyID 是主键 - NOT NULL 就足够了。
  • 奇怪的是,MyID = 100 有效,但 MyID IS NOT NULL 仍然跳闸 1175
  • IS NULL 不会跳闸 1175,但 IS NOT NULL 会跳闸 1175。非常烦人,因为我的意图很明确。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多