【问题标题】:LIMIT Postgres DELETE [duplicate]限制 Postgres 删除 [重复]
【发布时间】:2020-06-03 19:36:12
【问题描述】:

使用安全 LIMIT 的简单 DELETE 会引发语法错误:

DELETE FROM system."products" LIMIT 1

错误:“LIMIT”处的语法错误

SQL 状态:42601

如何限制要删除的行数?

(PostgresSQL 9.6 版)

【问题讨论】:

  • 当然,当你有 ORDER BY 时,任何查询中的 LIMIT 都更有意义
  • @a_horse_with_no_name 我认为我的查询是简单的 ANSI SQL,适用于所有 ANSI 兼容系统
  • ANSI SQL 中没有LIMIT(不用于DELETE,也不用于任何其他SQL 命令)

标签: postgresql limit sql-delete


【解决方案1】:

您只能在SELECT 语句中使用LIMIT

试试这个:

DELETE FROM system."products" WHERE id IN (SELECT id FROM system."products" LIMIT 1)

否则你可以有这样的东西

DELETE FROM system."products" WHERE id bewteen ? and ?

显然,这只有在您的表中有一个唯一列(在我的示例中名为 id)时才有效!

【讨论】:

  • IN()是邪恶的,没有别的办法吗?
  • @DanielW.: 你为什么认为IN () 是邪恶的——尤其是如果它只包含一个值
  • @a_horse_with_no_name 我的查询包含多个值,您正在讨论与问题无关的内容
  • @DanielW.:然后发布实际查询。如果您向我们展示一个(过度)简化的问题,您希望如何得到真正的问题的答案
  • @DanielW。表有主键吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-12-10
  • 1970-01-01
  • 1970-01-01
  • 2021-11-09
  • 2018-02-24
  • 1970-01-01
相关资源
最近更新 更多