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

この前提では、null 以外のグループと名前の組み合わせは 1 つだけです。そうしないと、1対多の結合になります。これは、選択基準に基づいて修正できます。

于 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 に答える