如何在MySql中插入记录并同时更新它?

时间:2015-03-23 01:59:21

标签: mysql

我想插入一条记录,但同时更新其中一条数据。例如,我要插入一条新记录,但我插入的内容已经存在于表格中,我只是要更新一些内容,让我们说出这个ID。

start transaction;
INSERT INTO notification (user_id,notify_to,activity,date) SELECT     
user_id,notify_to,activity,date FROM notification;
UPDATE notification SET user_id='4';
commit;

我试过这个,但它没有用。它不是仅仅更新我插入的新记录,而是更新每条记录。我能做些什么来实现这个目标吗?

3 个答案:

答案 0 :(得分:1)

如果您要复制表格中的所有记录,但所有新记录的user_id设置为4,请尝试以下操作...

INSERT INTO notification (user_id, notify_to, activity, date)
SELECT 4, notify_to, activity, date FROM notification;

答案 1 :(得分:1)

在此特定数据上添加一个唯一索引,您希望重复这些索引(您说数据存在,因此必须存在重复的情况)。

然后使用以下查询插入或更新数据:

INSERT INTO notification (user_id,notify_to,activity,date) SELECT     
user_id,notify_to,activity,date FROM notification ON DUPLICATE UPDATE  user_id='4';

答案 2 :(得分:0)

您缺少where子句:

UPDATE notification SET user_id='4' WHERE ...

如果没有where子句,则可以有效地更新所有记录。