根据另一个表中的列更新表

时间:2011-08-07 14:45:37

标签: mysql sql

UPDATE bad_table,good_table
SET bad_table.post_content = good_table.post_content    
WHERE bad_table.post_type = 'post' AND 
bad_table.post_date = good_table.post_date

这是我的代码,用于根据日期值从一个表到另一个表获取一个完整列,我发现这个案例是唯一的。但是,我一无所获。

如果我选择这个,就像这样:

SELECT * FROM bad_table,good_table
WHERE bad_table.post_type = 'post' AND 
bad_table.post_date = good_table.post_date

...我得到了我期望的所有行。我做错了什么?

1 个答案:

答案 0 :(得分:2)

假设good_table中可能有多个不是帖子的条目,您需要优化您的加入条件以仅选择“帖子”

    update bad_table
inner join good_table on bad_table.post_date = good_table.post_date 
       and bad_table.post_type = good_table.post_type
       set bad_table.post_content = good_table.post_content
     where bad_table.post_type = 'post'