SQL Server で重複行を削除の方法
SQL Serverでは、次の方法で重複行を削除できます:
- DISTINCTキーワードを使用する:重複しない行を選択するには、SELECT DISTINCT文を使用します。たとえば、「column_name」という名前の列から重複しない値を選択するには、次の文を使用します。
SELECT DISTINCT column_name FROM table_name;
- 「GROUP BY」文を使用:指定した列でグループ化し、各グループの最初の行を選択する「GROUP BY」文を使用します。たとえば、「column_name」という列でグループ化する場合:
SELECT column_name FROM table_name GROUP BY column_name;
- 重複を排除するためにウィンドウ関数を利用:ウィンドウ関数ROW_NUMBER()は行ごとに一意のシーケンシャル番号を割り当てることで重複行を除去します。例えば、「column_name」列から重複値を除外するには以下を実行します。
SELECT column_name
FROM (
SELECT column_name, ROW_NUMBER() OVER(PARTITION BY column_name ORDER BY column_name) AS row_num
FROM table_name
) sub
WHERE row_num = 1;
- 重複行を削除するために一時テーブルを活用する: 重複行を一時テーブルに挿入し、一時テーブルから重複しない行のみを選択します。例えば、次の手順に従って重複行を取り除きます:
- 一時テーブルを作成します。: CREATE TABLE temp_table AS SELECT * FROM table_name;
- 重複行を削除します:DELETE FROM temp_table WHERE column_name IN (SELECT column_name FROM temp_table GROUP BY column_name HAVING COUNT(*) > 1);
- 重複のない行を選択:SELECT DISTINCT * FROM temp_table;
- DROP TABLE temp_table;