Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/64.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 基于另一个表中的列更新表_Mysql_Sql - Fatal编程技术网

Mysql 基于另一个表中的列更新表

Mysql 基于另一个表中的列更新表,mysql,sql,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 …我得到了我所期待的

这是我的代码,用于根据日期值将一整列从一个表移到另一个表,我发现该值在这种情况下是唯一的。然而,我什么也得不到

如果我选择此选项,如下所示:

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

…我得到了我所期待的一切。我做错了什么?

假设good_表中可能有多个不是posts的条目,您需要改进连接条件,只选择“posts”

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

谢谢你,杰夫。但是你的代码给了我一个错误#1064-您的SQL语法有错误;请查看与MySQL服务器版本对应的手册,以了解在第3行的“内部连接好的表在坏的表上。post\u date=good\u table”附近使用的正确语法。请注意,set语句出现在连接之后。有关更新的查询,请参阅答案。谢谢。只是好奇;您是否还必须联接table.post_类型,以便以后将其包含在WHERE语句中?否,我在post_类型上进行联接,以确保没有更新具有相同post_日期的其他记录类型。我对你的数据模型做了这样的假设,仅仅是因为你有post_类型的列。实际上,我确保post_类型='post'的不同post_日期值的数量与我所知道的post数量相同。再次感谢。
    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'