0

假设我有一个如下所示的表:

col_1 |  col_2    
x     |   y    
null  |   y    
a     |   b

我可以在查询 中将 null 更改col_1xif吗?y = y

我正在尝试在 SQL 中执行此操作。我想我需要使用 CASE 子句,但不知道该怎么做。

4

3 回答 3

2

您需要对表本身应用自联接,并在找到匹配项时更新行。

update tablename set
 cp.col_1 = pp.Col_1
 from tablename cp,
 tablename pp where
 cp.col_1 = null and
 cp.col_2 = pp.col_2
于 2012-08-29T12:18:10.523 回答
2

这应该可以解决问题

UPDATE MyTable x1
    set col_1 = 
    (SELECT col_1 
     FROM MyTable x2 
     WHERE x2.col_2 = x1.col_2 AND x2.col_1 IS NOT NULL
           AND rownum = 1)
    WHERE x1.col_1 IS NULL

SQL小提琴在这里

于 2012-08-29T12:29:17.523 回答
0

你可以这样做,但如果不是 null,x 值对于相同的 y 值必须相同

  1. 使用光标
  2. 选择临时表中所有不同的 y 值及其 x 值
  3. 如果列为空,则迭代每一行并设置您的 x 值

性能很慢,但它只是工作

于 2012-08-29T12:26:54.593 回答