2

我必须从不同的表中插入多个列,但仍然遇到同样的问题。

问题是这样的:我可以将 TableA.ColumnA 中的列插入 TableB.ColumnA 没问题。但是接下来我需要将 TableC.columnA 插入到 TableB.columnB 中,并且这个 INSERT 命令添加了额外的行来更改数据的 id。

下面是我的插入命令,以及我为使 id 匹配(不成功)而执行的 UPDATE 命令。

我知道插入命令可以添加额外的行,但是我如何通过它以便 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)
4

1 回答 1

1

如果我理解你的问题是正确的,你实际上并不想要你的第二个和第三个语句,而只是一个更新语句来更新users_posts.post_content

如果您进行插入,它总是(假设它不会因其他原因(即约束)而失败)插入新行,因此关键字INSERT.

试试这个语句,它根据 idusers_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 
于 2013-07-10T22:44:55.813 回答