我必须从不同的表中插入多个列,但仍然遇到同样的问题。
问题是这样的:我可以将 TableA.ColumnA 中的列插入 TableB.ColumnA 没问题。但接下来我需要将 TableC.columnA INSERT TableC.columnA 插入 TableB.columnB 并且此 INSERT 命令添加额外的行来更改数据的 id。
我的插入命令,加上我为使 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)
最佳答案
如果我理解你的问题是正确的,你实际上不需要你的第二个和第三个语句,而只是一个更新语句来更新 users_posts.post_content
如果您执行插入,它总是(假设它不会因其他原因(即约束)而失败)插入新行,因此关键字 INSERT
。
试试这个语句,它根据 ids 从 content_bodies
表将帖子内容添加到 users_posts
表!
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
关于mysql - 克服多余的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17581069/