DELETE
できます cte から:
WITH cte AS (SELECT *,ROW_NUMBER() OVER(PARTITION BY uniqueid ORDER BY col2)'RowRank' FROM Table) DELETE FROM cte WHERE RowRank > 1
プレ>
ROW_NUMBER()
関数は各行に番号を割り当てます。PARTITION BY
そのグループ内の各項目の番号付けをやり直すために使用されます。この場合、uniqueid
の各値 番号は 1 から始まり、そこから上がります。ORDER BY
数字が入る順序を決定します。各uniqueid
からROW_NUMBER()
を持つすべてのレコードに 1 から番号が付けられます 1 より大きい場合、uniqueid
が重複しています
ROW_NUMBER()
の仕組みを理解するには 関数は機能します。試してみてください:SELECT *,ROW_NUMBER() OVER(PARTITION BY uniqueid ORDER BY col2)'RowRank' FROM Table ORDER BY uniqueid
プレ>
ROW_NUMBER()
のロジックを調整できます 保持または削除するレコードを調整する機能。たとえば、これを複数のステップで実行したい場合、最初に姓が同じで名が異なるレコードを削除し、
PARTITION BY
に姓を追加できます。 :WITH cte AS (SELECT *,ROW_NUMBER() OVER(PARTITION BY uniqueid, col3 ORDER BY col2)'RowRank' FROM Table) DELETE FROM cte WHERE RowRank > 1
プレ>