gpt4 book ai didi

mysql - INSERT ... ON DUPLICATE KEY - 如何在非主键上执行此操作?

转载 作者:行者123 更新时间:2023-11-29 02:03:07 24 4
gpt4 key购买 nike

我有以下问题。我有一个表,其中包含 idtrack_idartist_idtitle 等列。唯一的唯一键是主键 id,它是一个自动递增的 int。 track_id 不是唯一的。

因此出现了我需要为具有特定 track_id 的记录更新 title 的情况。如果不存在这样的记录,则应创建一个新记录。我不能使用 REPLACE INTO 或 INSERT...ON DUPLICATE KEY,因为它们是根据唯一键或主键运行的。我也不能使用多个查询,因为要进入的系统需要在单个查询中完成这些类型的操作。该查询可以根据需要复杂化,但所有这些都必须驻留在一个查询中。

如何做到这一点?

最佳答案

按顺序执行这两个查询:

update track set
title = ?
where track_id = ?;

insert into track (nonkey_col_1, nonkey_col_2, ...)
select 'nonkey_col_1_value', 'nonkey_col_2_value', ...
from track
where not exists (select * from track where track_id = ?)
limit 1;

只有其中一个会产生影响:第一个只有在有一行时才会执行。第二个仅在没有一行时执行。

关于mysql - INSERT ... ON DUPLICATE KEY - 如何在非主键上执行此操作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11452269/

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