0

我有一个数据库中的日志列表。每个日志都与一个人相关联。每个人都与一个组相关联。但是,出于某种原因,某些组字段为 NULL。

我想为这些人使用其他行中的已知组值,并在 Select 语句中使用 CASE 替换 NULL 值(对其他想法开放,只是不更新​​或创建表;))

IE

ID    NAME    GROUP  
====================  
1     ALex     NULL     
2     Amanda   San Antonio    
3     Alex     Austin
4     John     Toronto

我想要的是

ID    NAME    GROUP  
====================  
1     Alex     Austin
2     Amanda   San Antonio    
3     Alex     Austin
4     John     Toronto
4

3 回答 3

2

这是执行此操作的 ANSI 语法:

update t
    set "group" = (select max("group") from t t2 where t2.name = t.name)
    where "group" is null;
于 2013-09-09T17:43:19.393 回答
0
Update NLGS
Set NLGS.Group =LGS.Group 
FROM 
Logs NLGS
INNER JOIn 
(select Name,Group from logs
 WHER GROUp is not null) LGS
ON NLGS.Name=LGS.NAME
WHERE NLGS.GROUP IS NULL

在此假设只有非空组和名称的一种组合。否则,它会导致 1-many join。这可以根据您的选择标准进行更正。

于 2013-09-09T17:55:49.963 回答
0

像这样的东西怎么样

UPDATE Table1
SET [Group] = g.[Group]
FROM Table1 t INNER JOIN (
SELECT [Name], [Group]
FROM Table1
WHERE [Group] IS NOT NULL
  ) g ON t.Name = g.Name
WHERE t.[Group] IS NULL

看看这个演示

SQL 小提琴演示

于 2013-09-09T17:45:38.350 回答