假設你正打算COL3是在非遞減順序遞增,這應該這樣做:
UPDATE MyTable
SET col2=(SELECT COUNT(*)
FROM MyTable AS T2
WHERE T2.col1=T1.col1 AND T2.col3<=T1.col3)
FROM MyTable AS T1
您將獲得COL2重複,如果在COL3重複特定的col1值。
如果你有興趣,這裏是一個相當詳細(更昂貴的執行智慧)解決方案使用排名功能。它具有相同的問題(即計數被重複),用於COL1/COL3重複,因爲以前的解決方案:-ing
UPDATE MyTable
SET col2=(
-- In the following query, DISTINCT merges rank dups caused by col3 dups
-- SELECT TOP(1) MyRank would also work.
SELECT DISTINCT MyRank
FROM (
SELECT col3,
DENSE_RANK() OVER (PARTITION BY col1 ORDER BY col3) AS MyRank
FROM MyTable
WHERE col1=UpdatedTable.col1
) As RankTable
WHERE RankTable.col3=UpdatedTable.col3)
FROM MyTable AS UpdatedTable