gpt4 book ai didi

mysql - 在更新语句之前删除复合键的冲突记录

转载 作者:行者123 更新时间:2023-11-29 09:42:16 26 4
gpt4 key购买 nike

我有一个表,其中包含类型、entityId、userid 的复合键。现在我想出于某种原因更改表记录。更新记录时出现问题,更新语句会出现重复键等错误。

例如我的查询是这样的 -

UPDATE iap SET type = 'tour', entityId = 3 WHERE type = 'bundle' AND 
entityId = 2

但是通过更新语句,它会查找现有记录,其中该用户已经拥有游览并且实体 ID 与我们想​​要更新的相同。现在在这种情况下,我想删除类型为 bundle 的记录,因为我希望所有 id 为 2 的 bundle 都成为 id 为 3 的旅游。因此,如果存在 id 3 的旅行,那么我只想删除 id 2 的 bundle ,无需更新。

请问有什么疑问吗?

最佳答案

试试这个。

CREATE TEMPORARY TABLE IF NOT EXISTS tmp_iap AS (SELECT id, user_id, type, entityId FROM iap where type='tour' AND 
entityId = 3);


DELETE from iap where type='bundle' AND entityId = 2 AND EXISTS (SELECT 1 FROM tmp_iap Where tmp_iap.user_id = iap.user_id)

如有重要数据,请先备份。

关于mysql - 在更新语句之前删除复合键的冲突记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56375891/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com