gpt4 book ai didi

php - 对不是主键的多个值进行重复键更新

转载 作者:行者123 更新时间:2023-11-30 22:10:14 24 4
gpt4 key购买 nike

我基本上需要做一个“如果不存在则插入,否则更新”类型的查询,我读过的所有内容告诉我的方式是 Insert into...On Duplicate Key Update .问题是,我的主键是一个自动增量值,我从不与之交互或跟踪它,而且我无法真正动态生成它以放入我的查询中。

一个典型的行是:

编号|项目编号 |地点 |成本中心类别 |名称 |编号 |年份 | Q_1 |

1 | 200 |国大医院 | 1 |asfoi | 1098123|等

基本上,每一行的唯一性(不是字面上的)来自 Project_ID、位置、Cost_Center_Category、名称、编号和年份的组合。如果所有这些都相同,则会更新 Q_1

UPDATE Labour_Planning 
SET $Q = $submit
WHERE Project_ID = $selected_project
AND Year = $selected_year
AND Cost_Center_Category = $CCC
AND Cost_Center_Name = '$CC'
AND Cost_Center_Number = '$CC_Number'
AND Location = '$location';

是的,我知道,SQL 注入(inject)等等,我会让它变得更好。现在,如果上述任何列不同,我需要想出一种基本上插入一行的方法。 Insert into....On Duplicate 键可以吗?

我看到的每个示例都在其插入语句中使用主键,但在这种情况下这是不可能的。

最佳答案

我做了一些测试,这就是我得到的结果

create table test.a (
a int PRIMARY KEY,
b int,
c int
);

create UNIQUE index some_index on test.a(b,c);

insert into test.a VALUES (1,2,3);
insert into test.a VALUES (2,2,3); -- fails
insert into test.a VALUES (2,2,3) ON DUPLICATE KEY UPDATE a = 2; -- updates

因此,您只需在您认为必须唯一的字段上创建复合唯一索引。

关于php - 对不是主键的多个值进行重复键更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40313839/

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