UPDATE有重复列的地方

  • 本文关键字:UPDATE sql sql-server
  • 更新时间 :
  • 英文 :


我想知道如何更新重复列的值。

示例

tbody> <<tr>
columnna ColumnB ColumnC 重复?
1111234没有
NAMEC2225678没有
NAMEB2225678没有

你的解决方案实际上比你接受的那个更好(只要你改正了错误)。因为INNER JOIN意味着您不更新任何行,除了那些需要更改为'Yes'的行,而您接受的答案更新ALL表中的行没有必要。你的问题是

  • 使用AND而不是,来组合连接条件。
  • 你的第二个连接条件是比较同一列本身。
  • 第二个连接条件应该是ColumnB而不是columnna
  • 不需要子查询来连接表本身。
  • 但最重要的是,你没有添加一个条件来阻止行加入到自己。
UPDATE A
SET [Repeated?] = 'Yes'
FROM [MY_TABLE] AS A
INNER JOIN [MY_TABLE] AS B
ON B.ColumnC = A.ColumnC
AND B.ColumnB = A.ColumnB
-- The next condition prevents a row matching itself
AND B.ColumnA <> A.ColumnA;

指出:

  1. 当使用FROM更新表时,UPDATE是别名而不是表名。
  2. 最佳实践是不要使用需要转义的字符来命名列,例如[Repeated?],只需使用Repeated(或者我会使用IsRepeated)。
  3. 你最好在你需要的时候查询它,而不是每次它改变时都更新表。

我想这应该能成功

UPDATE yt1
SET Repeated= (CASE WHEN yt2.ColumnA IS NULL THEN 'No' ELSE 'Yes' END)
FROM YourTable yt1
LEFT OUTER JOIN YourTable yt2
ON yt1.ColumnB = yt2.ColumnB AND yt1.ColumnC = yt2.ColumnC
WHERE yt1.ColumnA <> yt2.ColumnA

相关内容

  • 没有找到相关文章

最新更新