我想要什么
我想 REPLACE INTO
我的table只有两个 column1
以及 column2
都是一样的。否则,即使 column1
或者 column2
是一样的。
我试过的
我做的 column1
以及 column2
主键。
我的sql语句。。。
REPLACE INTO mytable (column1, column2, column3) VALUES (?, ?, ?)
它替换而不是插入,即使只是其中一个 column1
或者 column2
是一样的。
我试图寻找答案,但我不知道正确的语言来得到正确的结果。
编辑
我用..设置主键。。
ALTER TABLE PKweight DROP PRIMARY KEY, ADD PRIMARY KEY(id,season);
我的table。。
我换了新的 REPLACE INTO
与 INSERT 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
除了上的复合主键 id
以及 season
我还有一个独特的索引 id
如上面phpmyadmin屏幕截图中的灰色键所示。我把它移走了。。
ALTER TABLE PKweight DROP INDEX id
1条答案
按热度按时间ki1q1bka1#
我试着用你提到的方法做同样的事情,但是它是基于id和first name上创建的约束(两列约束)替换和插入的。
首先,我创建了一个表:
当前表包含以下数据:
我在子句中添加了replace,我认为它在id和first name匹配时替换,在不匹配时插入(意思是“and”condition而不是“or”)
每当id和名字匹配时它就会被替换,当id和名字不匹配时它就会被插入。如果你看到它取代了本开始本雪,泰利安兰泰利安斯特和插入乔恩和珊莎即使身份证已经存在。