使用 SQL 中单个列中所有可能的值组合更新 table 中的列
Update a column in a table with all possible combinations of values within a single column in SQL
对于所有可能的组合,如何使用其他列中的值更新 table 中的列?
示例:
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
对于所有可能的组合,如何使用其他列中的值更新 table 中的列?
示例:
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