MYSQL基于表2更新表1列';s列值
基于另一个表的列条件的基本SQL更新:MYSQL基于表2更新表1列';s列值,mysql,sql,sql-update,Mysql,Sql,Sql Update,基于另一个表的列条件的基本SQL更新: UPDATE table_1 SET col_value = '0' WHERE tbl2_col_val IN (SELECT tbl2_col_val FROM table_2 WHERE tbl2_col_val = 'whatever') 我得到的错误是: #1054-在'in/ALL/ANY子查询' 无论我到哪里,我总是发现同样的逻辑,但它不起作用。问题是在我相信的第一
UPDATE table_1
SET col_value = '0'
WHERE tbl2_col_val IN
(SELECT tbl2_col_val
FROM table_2
WHERE tbl2_col_val = 'whatever')
我得到的错误是:
#1054-在'in/ALL/ANY子查询'
无论我到哪里,我总是发现同样的逻辑,但它不起作用。问题是在我相信的第一个WHERE条款之后
编辑:
Wordpress数据库。大量帖子被导入到一个新的构建中,该主题对所有帖子都有一个自定义选项(复选框)。导入的帖子没有选择该选项并添加meta_值。如果我选中该复选框,则该post才会获得meta_值1,未选中将该值设置为0。它基本上只是一个枚举。我有超过1400个帖子,有些需要检查,有些需要检查。我能够运行一个函数,在functions.php中自动检查所有这些函数,现在我需要在DB中运行SQL更新,以自动取消选中其他函数。这就是使用WP-DB表查询的外观
UPDATE wp_postmeta SET meta_value = '0' WHERE term_taxonomy_id IN (SELECT term_taxonomy_id FROM wp_term_relationships WHERE term_taxonomy_id = '993')
希望这对您有所帮助。请发布这两个表的定义。。。。并将表别名添加到所使用的每个列名中。很遗憾,这会将t1.col_值中的所有值更新为0。您必须保留关系条件,否则它会更新所有值。对于ex t1.pk_colname=t2.fk_col_name
UPDATE table1 t1
JOIN table_2 t2 ON
t2.tbl2_col_val IN (SELECT t2.tbl2_col_val FROM table_2 WHERE t2.tbl2_col_val = 'whatever')
SET t1.col_value = '0';