sql-server - 使用 SQL 中单个列中所有可能的值组合更新表中的列
问题描述
对于所有可能的组合,如何使用其他列中的值更新表中的列?
例子:
COL1 | COL2 | COL3 | ClientKey | MasterKey
-----+-------+-------+------------+------------
123 | 345 | 678 | AAA | AAA
N/A | 345 | 678 | BBB | AAA
N/A | N/A | 678 | CCC | AAA
N/A | 345 | N/A | DDD | AAA
123 | 345 | N/A | EEE | AAA
123 | N/A | 678 | FFF | AAA
第一行填充了所有值,并且它有一个键 (ClientKey)。如何使用 ClientKey 列更新 MasterKey 列,检查第一行可能出现的所有可能组合。'N/A' 值等同于 NULL 值。
解决方案
假设我理解这个问题,最简单的方法是使用带有自连接的更新语句:
UPDATE t1
SET MasterKey = t0.ClientKey
FROM Table as t0
INNER JOIN Table as t1
ON (t0.Col1 = t1.Col1 OR t1.Col1 IS NULL)
AND (t0.Col2 = t1.Col2 OR t1.Col2 IS NULL)
AND (t0.Col3 = t1.Col3 OR t1.Col3 IS NULL)
WHERE t0.Col1 IS NOT NULL
AND t0.Col2 IS NOT NULL
AND t0.Col3 IS NOT NULL
推荐阅读
- c++ - 如何在 Qt Creator 中将默认预选的应用程序类型从普通 C 应用程序永久更改为普通 C++ 应用程序?
- azure - 从 Azure Ad auth 获取配置文件图像
- docker - 什么时候必须在 Dockerfile 的 CMD 指令中使用 `/bin/sh -c "..."`?
- kubernetes - Tracing Apache Camel route with Jaeger
- node.js - Dialogflow 实现无法使用 Mongoose 连接到 MongoDB
- kubernetes - 如果 Kubernetes pod 超出其 cpu 资源“限制”会怎样?
- ios - 如何从 XcodeTest setup() 运行终端命令?
- python - 如何在python代码中给出输入文件位置和输出位置
- sql - 如何在 Postgresql 中查找多行之间的重叠日期范围?
- c++ - 如何估计 PXA27x 处理器上卷积的执行时间?