在SQL中删除或更新重复值

时间:2017-03-20 08:21:05

标签: php mysql sql

我在steamid的数据库表中放了一个唯一索引。我不确定如何插入具有此键重复值的记录(删除旧记录)而不会出现错误。有人可以编辑我的代码以使其适合,谢谢。

$sql = "INSERT INTO steam_data (reg_date, reg_year, steamname, steamid) VALUES ('$dateoutput', '$dateoutputyear', '$personaname', '$steamid')";

错误是:

  

错误:INSERT INTO steam_data(reg_date,reg_year,steamname,steamid)   价值观('3月20日,07:09 pm','2017','Aweosmedude',   '76561113498123831721')重复输入'76561113498123831721'为密钥   'steamid'

3 个答案:

答案 0 :(得分:0)

$sql = "INSERT IGNORE INTO steam_data (reg_date, reg_year, steamname, steamid) VALUES ('$dateoutput', '$dateoutputyear', '$personaname', '$steamid')";

答案 1 :(得分:0)

这意味着您的steam_data表中已有streamid=76561113498123831721的记录;并且您的架构中有一个约束,可以确保您不会有多个streamid。因此,您可以执行INSERT IGNORE INTO stream_data...或执行INSERT INTO stream_data...ON DUPLICATE KEY...

e.g。

INSERT INTO steam_data (reg_date, reg_year, steamname, steamid) VALUES ('$dateoutput', '$dateoutputyear', '$personaname', '$steamid') ON DUPLICATE KEY UPDATE steamname=VALUES(steamname);

(@ ReneS答案有INSERT IGNORE INTO...)的例子

答案 2 :(得分:0)

另一个选项是REPLACE statement

  

REPLACEINSERT完全相同,只是如果表中的旧行与PRIMARY KEYUNIQUE索引的新行具有相同的值,在插入新行之前删除旧行。

REPLACE INTO steam_data (reg_date, reg_year, steamname, steamid) VALUES ('$dateoutput', '$dateoutputyear', '$personaname', '$steamid')

(我当然希望你实际上没有用这样的查询将数据插入数据库。使用准备好的语句!)