sql - 更新以在单个语句中切换布尔列
问题描述
如何以最有效的方式在单个sql语句中组合两个查询?
UPDATE TABLE_A a
SET a.is_active = FALSE
WHERE a.id IN (SELECT id FROM TABLE_B);
同样,但切换剩余id
s 的标志:
UPDATE TABLE_A a
SET a.is_active = TRUE
WHERE a.id NOT IN (SELECT id FROM TABLE_B);
解决方案
在 Postgres 中,您可以LEFT JOIN
在UPDATE
语句中使用以下语法:
UPDATE a
SET a.is_active = CASE WHEN b.id IS NULL THEN FALSE ELSE TRUE
FROM TABLE_A a
LEFT JOIN TABLE_B b ON a.id = b.id
推荐阅读
- javascript - 在 React 中创建的函数渲染返回,好或坏
- c# - 在 c# .Net 中使用 DirectoryEntry 以编程方式使用 %UserName% 设置主驱动器
- reactjs - 无法使用上下文更新值
- flutter - 测试 Flutter 本地 sqflite 数据库 onUpgrade 并且应用更新后没有数据显示
- javascript - 如何在角度中使用织物js将两个画布(外部和内部)保存为png
- angular - Angular Dialog Button 不响应布尔值的数据绑定
- r - 随机抽样 R
- apache-spark - PySpark 数据从非分区 hive 表加载到分区 hive 表的性能调整
- snakemake - Snakemake:子工作流程与主 DAG 不兼容
- apache-spark - Spark 从外部 foreach 批处理访问数据帧(Strcutred Streaming)