我想插入一条记录,但同时更新其中一条数据。例如,我要插入一条新记录,但我插入的内容已经存在于表格中,我只是要更新一些内容,让我们说出这个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;
我试过这个,但它没有用。它不是仅仅更新我插入的新记录,而是更新每条记录。我能做些什么来实现这个目标吗?
答案 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子句,则可以有效地更新所有记录。