仅当两列相同时才替换

时间:2019-01-03 04:19:46

标签: mysql primary-key sql-insert

我想要的

仅当<select class="custom_select" name="customSelect1" id="customSelect1"> <option value=''>Selected</option> <option value="0">0</option> <option value="1">1</option> <option value="2">2</option> </select> <select class="custom_select" name="customSelect2" id="customSelect2"> <option value=''>Selected</option> <option value="1">1</option> <option value="2">2</option> </select> <select class="custom_select" name="customSelect3" id="customSelect3"> <option value=''>Selected</option> <option value="1">1</option> <option value="2">2</option> </select> <button onclick='getSelected()'>Get Selected</button>REPLACE INTO相同时,我才想column1我的桌子。否则,即使column2column1相同,也应将其插入。

我尝试的内容

我制作了column2column1主键。

我的SQL语句...

column2

即使REPLACE INTO mytable (column1, column2, column3) VALUES (?, ?, ?) column1中的一个相同,它也会替换而不是插入。

我试图搜索答案,但是我不知道正确的语言才能获得正确的结果。

编辑

我用..设置了主键。

column2

我的桌子。

enter image description here

我将ALTER TABLE PKweight DROP PRIMARY KEY, ADD PRIMARY KEY(id,season); 替换为REPLACE INTO,但出现此错误...

INSERT INTO

这告诉我列PHP Fatal error: Uncaught PDOException: SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry '1' for key 'id' in 的一个重复项失败。

编辑2

PHP / MYSQL代码..

id

编辑3

除了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"]); } id上的复合PRIMARY KEY之外,我还season上有一个唯一索引,如上面phpmyadmin屏幕截图中的灰色键所示。我删除了。。

id

1 个答案:

答案 0 :(得分:1)

我尝试按照您提到的相同方式进行操作,但是它是根据创建的约束(两列约束)对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