mysql - MYSQL 根据表 2 的列值更新表 1 列
问题描述
基于另一个表的 col 条件的基本 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 子查询'中的未知列 'tbl2_col_val'
我到处都在寻找同样的逻辑,但它不起作用。这是我相信的第一个 WHERE 子句之后的问题。 这是我的资源之一……看起来很简单!
编辑:
WordPress 数据库。大量帖子被导入到新版本中,该主题对所有帖子都有一个自定义选项(复选框)。导入的帖子没有选择选项并添加meta_value。如果我选中该框,那么该帖子才会获得 1 的 meta_value,未选中将该值设置为 0。它基本上只是一个枚举。我有超过 1400 个帖子,有些需要检查,有些需要取消检查。我能够运行一个在functions.php中自动检查所有这些的函数,现在我需要在数据库中运行一个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')
解决方案
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';
希望这对您有所帮助。
推荐阅读
- python - 我将 python 对象传递给模板(使用 jinja),它不适用于一个模板,但适用于其他模板
- r - ggplot:as.Date.numeric(value) 中的错误:必须提供“原点”
- c# - httpwebrequest 201 创建 c# 表单如何从服务器获取创建资源的位置
- java - Eclipse 中的项目级别“Java 编译器”和 Windows 首选项级别“Java”->“编译器”有什么区别?
- asp.net - FileNotFoundException:无法加载文件或程序集“System.Net.Http.WebRequest”
- python - 无法导入 matplotlib.pyplot 'Nonetype' 对象不可迭代
- powershell - 使用 powershell 和任务计划程序 COM-Object 读取 csv 文件以创建从事件 id 触发的任务
- java - Jasper 报告作为 Java 应用程序的一部分
- android - 按日期重复事件的日历不起作用
- java - Zuul 路由优先级高于 Spring Controller