我想更新一个表SQL,其中ID +列已经存在。
问题是,当我想要插入时,它给了我一条消息错误:
**#1062 - Duplicate entry '35' for key 1**
所以,我尝试进行更新,但它也不起作用,因为语法不正确我的请求SQL的形式是:
INSERT INTO `liens_series`
(`id`, `id_series`, `password`)
VALUES (35, '12',
'<br>Saison 3 en cours de production'), ....
列表太长了。
答案 0 :(得分:1)
您可能想要调查MySQL中INSERT语句的ON DUPLICATE KEY UPDATE子句。简而言之,您的陈述可能会更改为
INSERT INTO `liens_series`
(`id`, `id_series`, `password`)
VALUES
(35, '12', '<br>Saison 3 en cours de production')
ON DUPLICATE KEY UPDATE `id_series` = '12',
`password` = '<br>Saison 3 en cours de production')
分享并享受。
答案 1 :(得分:0)
使用此:http://dev.mysql.com/doc/refman/5.5/en/insert-on-duplicate.html 如果需要,它将执行您想要的操作,插入或更新。
答案 2 :(得分:0)
如果您插入尚未确定ID的新行:
INSERT INTO `liens_series` (`id`, `id_series`, `password`) VALUES (NULL, '12', '<br>Saison 3 en cours de production');
或
INSERT INTO `liens_series` (`id_series`, `password`) VALUES ('12', '<br>Saison 3 en cours de production');
新的id将在LAST_INSERT_ID()
(MySQL)或mysql_insert_id()
(C,PHP等)中返回。
答案 3 :(得分:0)
如果要插入行,并更新其内容(如果已存在),请使用REPLACE INTO
:
REPLACE INTO `liens_series` (`id`, `id_series`, `password`) VALUES (35, '12', '<br>Saison 3 en cours de production');
请注意,在幕后,将删除ID为35的行(如果存在),然后发出INSERT
。因此,您无法仅部分更新行,受影响的行数反映了DELETES的隐含数量+ INSERTS的数量。