【发布时间】:2019-11-25 19:30:06
【问题描述】:
我有一个表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 中创建的。
您的任何帮助将不胜感激!
【问题讨论】:
-
Group、First_Name、Last_Name、Class 和 Suffix 是否可以为空?我在 SQL Fiddle 上没有看到,但值得一问;我认为复合键在这里可能会有所帮助,并且可以回答您的所有三个问题。我想。
-
我假设他们是;也许使它们不可为空,并从那里构建复合键?
-
不,这两个不能为空,但是我如何在相同的记录上应用复合键??
-
我根据您的 SQL Fiddle 建议了 4 列,而不是 2 列。 FIrst/Last Name 虽然不能为空,但还不够。我还建议了类和后缀。但是,与 SQL Fiddle 相比,我对您在帖子中列出的数据有点困惑。类和后缀不是唯一的吗?类在帖子中看起来是独一无二的,而不是在 SQL Fiddle 中。
标签: sql sql-server sql-update