我必须从不同的表中插入多个列,但仍然遇到同样的问题。
问题是:我可以将TableA.ColumnA中的列插入TableB.ColumnA没问题。但接下来我需要将TableC.columnA INSERT到TableB.columnB中,这个INSERT命令添加额外的行来改变数据的id。
我的插入命令,以及我正在执行的UPDATE命令,以使id匹配(不成功),如下所示。
我知道insert命令可以添加额外的行,但是如何传递这个以便id匹配?
我认为可能列有自动增量设置,但它们没有 - 所以这似乎不是问题。非常感谢任何帮助。
(1) INSERT INTO users_posts
(author_id,
post_id,
post_title)
SELECT contents.user_id, contents.id, contents.title
FROM contents
WHERE contents.id = id
(2) INSERT INTO users_posts
(post_content)
SELECT content_bodies.content
FROM content_bodies
WHERE content_bodies.id = id
(3) UPDATE users_posts
SET post_content = (SELECT content_bodies.content
FROM content_bodies
WHERE content_bodies.id = users_posts.post_id)
答案 0 :(得分:1)
如果我理解你的问题是正确的,那么你实际上并不想要你的第二和第三个陈述,而是只需要更新users_posts.post_content
的更新声明
如果你进行插入,它总是(假设它没有因其他原因而失败,即约束)插入新行,因此关键字INSERT
。
尝试使用此语句,根据ID将帖子内容添加到users_posts
表的content_bodies
表中。
UPDATE users_posts AS u
JOIN content_bodies AS b
ON b.id = u.post_id
SET u.post_content = b.content;
使用此SQLFiddle
查看此操作修改强>
请运行此查询并告知我是否正确匹配数据
SELECT * FROM users_posts u
JOIN content_bodies AS b
ON b.id = u.post_id