在没有唯一键的情况下更新重复记录中具有填充单元格值的空单元格

时间:2019-11-25 19:30:06

标签: sql sql-server sql-update

我有一个表tblPhone,其中包含重复的记录。例如

Group    First_Name    Middle_Name    Last_Name    Class    ...    Note    ...Other_Columns
-----    ----------    -----------    ---------    -----    ...    ----    ...-------------
Avo      FirstName     MiddleName     LastName     246      ...    NULL    ...Other_Columns
Avo      FirstName     MiddleName     LastName     215      ...    Valu    ...Other_Columns

如您所见,上面的示例表有两个重复的记录,没有唯一标识的KEY。

1)问题1是:如何唯一标识表中的每个重复记录?

2)参见Note列,该列在第一行具有NULL的值,在第二行具有Valu的一些值。问题2是:如何将填充单元格Valu中的值更新为空/ NULL单元格?

2)问题3:如何获取和更新Class列中每个单元格中的最低数值?

我尝试编写的UPDATE查询如下,但在CASE ELSE子句中却感到困惑:

UPDATE tblPhone
   SET [Note] = CASE WHEN [Note] = '' THEN [Note] = ???
WHERE Last_Name = 'LastName'
  AND First_Name = 'FirstName';

我还在SQL Fiddle中创建了示例表架构。

在SQL Server 2017中创建数据库。

您的任何帮助将不胜感激!

1 个答案:

答案 0 :(得分:1)

您可以使用子查询:

UPDATE p1
    SET p1.[Note] = (
        SELECT TOP(1) [Note]
        FROM tblPhone p2 
        WHERE p2.[Note] IS NOT NULL 
            AND p2.First_Name = p1.First_Name
            AND p2.Last_Name = p1.Last_Name
        )
FROM tblPhone p1
WHERE p1.[Note] IS NULL;