gpt4 book ai didi

mysql - 仅当两列相同时才替换为

转载 作者:行者123 更新时间:2023-11-29 09:55:00 25 4
gpt4 key购买 nike

我想要什么

仅当column1column2 相同时,我才想REPLACE INTO 我的表格。否则,即使 column1column2 相同,它也应该 INSERT INTO。

我尝试过的

我创建了column1column2主键。

我的SQL语句...

REPLACE INTO mytable (column1, column2, column3) VALUES (?, ?, ?)

即使只有column1column2 之一相同,它也会替换而不是INSERTS。

我尝试寻找答案,但我不知道使用正确的语言来获得正确的结果。

编辑

我设置了主键..

ALTER TABLE PKweight DROP PRIMARY KEY, ADD PRIMARY KEY(id,season);

我的 table ..

enter image description here

我用 INSERT INTO 替换了 REPLACE INTO 并收到了此错误...

PHP Fatal error:  Uncaught PDOException: SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry '1' for key 'id' in

这告诉我它在 id 列的一个重复项上失败。

编辑2

PHP/MYSQL 代码..

foreach($teamO as $tm){
$stmt = "REPLACE INTO PKweight (id, season, name, toi, weight_toi, standing, rank) VALUES (?, ?, ?, ?, ?, ?, ?)";
$dbConnection->prepare($stmt)->execute(["$tm->id", "$tm->season", "$tm->name", "$tm->toi", "$tm->weight_toi", "$tm->standing", "$tm->rank"]);
}

编辑3

除了 idseason 上的复合主键之外,我还在 id 上有一个唯一索引,如 phpmyadmin 中的灰色键所示上面的截图。我删除了它..

ALTER TABLE PKweight DROP INDEX id

最佳答案

我尝试按照您提到的相同方式进行操作,但它是根据创建的约束(两列约束)创建的 ID 和名字约束来替换和插入。

首先我创建了一个表:

CREATE TABLE Sakila.ReplacePrac (
Studentid INT(6) ,
Firstname VARCHAR(20),
Lastname VARCHAR(30) ,
Gender CHAR(1),
Primary key(Studentid, Firstname)) ;

insert into ReplacePrac
select 1, 'Rob', 'Stark', 'M' union all
select 1, 'Ben', 'Stark', 'M' union all
select 2, 'Arya', 'Stark', 'F' union all
select 2, 'Tyrian', 'Lan', 'M' ;

当前表有以下数据:

# Studentid, Firstname, Lastname, Gender
1, Ben, Stark, M
1, Rob, Stark, M
2, Arya, Stark, F
2, Tyrian, Lan, M

我添加了 Replace into 子句,我认为只要 ID 和名字匹配,它就会替换,只要不匹配,它就会插入(意味着它是“AND”条件而不是“OR”)

Replace into Replaceprac (StudentID, Firstname, Lastname, Gender) 
Values('1', 'Jon', 'Snow', 'M'),
('1', 'Ben', 'Snow', 'M'),
('2', 'Sansa', 'Startk', 'F'),
('2', 'Tyrian', 'Ster', 'M')

只要 ID 和名字匹配,它就会被替换,而当 ID 或名字不匹配时,它就会被插入。如果您看到它将 Ben Start 替换为 Ben Snow,将 Tyrian Lan 替换为 Tyrian Ster,并插入 Jon 和 Sansa,即使 ID 已经存在。

# Studentid, Firstname, Lastname, Gender
1, Ben, Snow, M
1, Jon, Snow, M
1, Rob, Stark, M
2, Arya, Stark, F
2, Sansa, Startk, F
2, Tyrian, Ster, M

关于mysql - 仅当两列相同时才替换为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54016289/

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