Microsoft SQL Server

SQL Server : SQL

重複レコードの id を取得する

SQL Server データベースのあるテーブル中にキーが重複したレコードが存在することが分かった。削除するためには、そのレコードの id が判明すると作業が容易だ。そこで次のような SQL を作ってみた。

SELECT * FROM TBL_A WHERE (COL_A + CONVERT(NVARCHAR,COL_B)) IN (
SELECT COL_A + CONVERT(NVARCHAR, COL_B) FROM TBL_A
GROUP BY COL_A, COL_B
HAVING COUNT(*) > 1)
ORDER BY COL_A + CONVERT(NVARCHAR,COL_B)

ポイントは、SQL Server で、WHERE ~ IN を書く際、複数列の比較ができないことだ。そこで、一つの列になるよう 2 つの列を結合して、1 つにした。今回は Date 型の列も含まれていたため、NVARCHAR がたに変換して結合した。

-Microsoft SQL Server