我有一个表格内容,我在其中添加有关页面的信息。
id history_id title body.
1 0 home this home
2 1 home here is sometext.
我正在使用history_id来跟踪对页面所做的更改,这里我想恢复对记录id = 1
所做的更改,同时使用以前的内容创建新记录。
我试过这个。
INSERT INTO content(id, history_id, title, body)
select id, history_id, title, body;
UPDATE content (SELECT title, body WHERE id = 1)
SET title = 'title', body='body';
它已成功创建包含先前内容但未更新当前记录的新记录。任何人都可以帮助我如何更新选择?我应该在这里做些什么改变?感谢。
答案 0 :(得分:0)
您的UPDATE
查询未正确写入
UPDATE content SET title = 'title', body = 'body' WHERE id = 1;
在SELECT
上使用UPDATE
:
UPDATE content a LEFT JOIN content b ON (a.id = b.history_id AND a.id = 1)
SET a.title = b.title, a.body = b.body;
我不完全确定您的内容历史记录是如何工作的,但我根据我的最佳猜测形成了一个查询
答案 1 :(得分:0)
我不完全确定我理解你想要什么,但要根据现有记录进行更新
UPDATE content a, content b SET a.title = b.title, a.body = b.body WHERE a.id = '1' AND b.id = '2';
其中a.id是您要替换的记录,b.id是您要复制的记录。 您可能还希望在insert语句中包含WHERE子句,否则您将复制表中的每条记录:
INSERT INTO content(id, history_id, title, body) SELECT id, history_id, title, body FROM content WHERE id = 1;
其中id是您要复制的记录
答案 2 :(得分:0)
最后我想出了更新选择。
UPDATE content c,
(SELECT
c1.title AS title,
c1.body AS body
FROM content c1
WHERE c1.id = x) AS c2
SET
c.title = c2.title,
c.body = c2.body
WHERE id = x;