克服额外的行

时间:2013-07-10 21:18:38

标签: mysql sql insert

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

问题是:我可以将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)

1 个答案:

答案 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