You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PostgreSQL中如何从非唯一行集中删除指定单条行?

删除无唯一键表中的单条指定行

你的表结构如下:

create table order_details(
    id_of_product integer,
    id_of_person text
)

由于两个字段都不唯一,要删除指定id_of_product和id_of_person的单条行,不同数据库有不同实现方式,以下是常见场景的解决方案:

MySQL 实现

利用LIMIT子句限制仅删除一行:

-- 删除指定id_of_product和id_of_person的单条行
DELETE FROM order_details
WHERE id_of_product = 6 AND id_of_person = '目标用户ID'
LIMIT 1;

-- 如果只需删除id_of_product=6的任意一行(备注中该组id_of_person相同),可简化为
DELETE FROM order_details
WHERE id_of_product = 6
LIMIT 1;

Oracle/SQLite 实现

借助数据库内置的唯一行标识符(如ROWID)定位单行:

Oracle

DELETE FROM order_details
WHERE ROWID = (
    SELECT ROWID
    FROM order_details
    WHERE id_of_product = 6 AND id_of_person = '目标用户ID'
    FETCH FIRST 1 ROW ONLY
);

SQLite

DELETE FROM order_details
WHERE ROWID = (
    SELECT ROWID
    FROM order_details
    WHERE id_of_product = 6 AND id_of_person = '目标用户ID'
    LIMIT 1
);

SQL Server 实现

使用TOP(1)限制删除行数:

DELETE TOP(1) FROM order_details
WHERE id_of_product = 6 AND id_of_person = '目标用户ID';

注意事项

  • 未指定排序条件时,数据库会随机选择一行删除;若需按特定顺序(如最早插入的行)删除,可在子查询中添加ORDER BY(需依赖额外字段,如插入时间,若表中无此类字段则只能依赖数据库内部顺序)。
  • 长期建议给表添加自增主键字段,能大幅提升数据操作的精准度与效率。

内容的提问来源于stack exchange,提问作者Raging Pacifist

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.22 20:19:00