【发布时间】:2026-01-04 16:15:02
【问题描述】:
在 Postgresql 中,我有一个具有复合主键的表。
PRIMARY KEY(id_fnd_users, id_app_apps,id_app_categories)
我正在尝试创建一个查询以进行批量删除,并且我希望此查询的大小固定(用于统计分析目的)。
这是我想出的:
DELETE FROM app_users_apps_categories
WHERE
("id_fnd_users", "id_app_apps","id_app_categories")
in (
SELECT id_fnd_users, id_app_apps, id_app_categories
FROM unnest($1::"uuid"[], $2::"uuid"[], $3::"uuid"[]) AS foo(id_fnd_users, id_app_apps,id_app_categories)
)
以下是我为此查询设置的参数示例:
$1 = '{61615807-c654-4844-910c-1609dcf3ff4c,61615807-c654-4844-910c-1609dcf3ff4c}',
$2 = '{25fda4e9-ca83-41fb-98ad-77230a74bbbc,34c0cd50-905e-4ea6-9ccf-baeaa591e98a}',
$3 = '{NULL,NULL}'
基本上我会得到这样的查询:
DELETE FROM app_users_apps_categories
where ("id_fnd_users", "id_app_apps","id_app_categories") in (
SELECT id_fnd_users, id_app_apps, id_app_categories
FROM
unnest(
'{61615807-c654-4844-910c-1609dcf3ff4c,61615807-c654-4844-910c-1609dcf3ff4c}'::"uuid"[],
'{25fda4e9-ca83-41fb-98ad-77230a74bbbc,34c0cd50-905e-4ea6-9ccf-baeaa591e98a}'::"uuid"[],
'{NULL,NULL}'::"uuid"[]
) AS foo(id_fnd_users, id_app_apps,id_app_categories)
)
查询执行正确,但我的记录没有被删除。 我检查了 ID 和它们的顺序,它们没问题。 所以我想这不是正确的做法,但我想不出另一个。
提前致谢。
【问题讨论】:
标签: sql postgresql performance