如何构建查询以按分组中的序号更新列?例如,有下表:
+----+------+------+----------+
| Id | Col1 | Col2 | Col3 |
+----+------+------+----------+
| 1 | aaa | bbb | abcdef |
| 2 | ccc | ddd | ghijklmn |
| 3 | eee | fff | abcdef |
| 4 | ggg | hhh | ghijklmn |
| 5 | iii | jjj | ghijklmn |
| 6 | kkk | lll | abcdef |
+----+------+------+----------+
可以看到,Col3列中有重复值。如何构建一个 SQL 查询来更新表,以便在其执行后,组的序号在列中,Col1还是Col2无关紧要?排序顺序无关紧要。目标是为每个组设置一个唯一的数字。
+----+------+------+----------+
| Id | Col1 | Col2 | Col3 |
+----+------+------+----------+
| 1 | aaa | 1 | abcdef |
| 2 | ccc | 2 | ghijklmn |
| 3 | eee | 1 | abcdef |
| 4 | ggg | 2 | ghijklmn |
| 5 | iii | 2 | ghijklmn |
| 6 | kkk | 1 | abcdef |
+----+------+------+----------+
MS SQL(选项之一):