主キーのない SQL テーブルからの重複レコードの削除
主キーのない SQL テーブルでは、重複レコードを特定して削除できます。複雑なタスクになる。この問題は、複数の行が特定の列で同じ値を共有し、データに冗長性が生じた場合に発生します。これを解決するために、列の組み合わせに基づいて重複行を効果的に削除するクエリを検討します。
指定されたデータを持つ「employee」という名前の次のテーブルについて考えます。
create table employee ( EmpId number, EmpName varchar2(10), EmpSSN varchar2(11) ); insert into employee values(1, 'Jack', '555-55-5555'); insert into employee values (2, 'Joe', '555-56-5555'); insert into employee values (3, 'Fred', '555-57-5555'); insert into employee values (4, 'Mike', '555-58-5555'); insert into employee values (5, 'Cathy', '555-59-5555'); insert into employee values (6, 'Lisa', '555-70-5555'); insert into employee values (1, 'Jack', '555-55-5555'); insert into employee values (4, 'Mike', '555-58-5555'); insert into employee values (5, 'Cathy', '555-59-5555'); insert into employee values (6 ,'Lisa', '555-70-5555'); insert into employee values (5, 'Cathy', '555-59-5555'); insert into employee values (6, 'Lisa', '555-70-5555');
To 「EmpId」と「EmpSSN」に基づいて重複する行を削除するには、以下を活用できます。クエリ:
DELETE SUB FROM (SELECT ROW_NUMBER() OVER (PARTITION BY EmpId, EmpName, EmpSSN ORDER BY EmpId) cnt FROM Employee) SUB WHERE SUB.cnt > 1
説明:
このクエリを実行すると、データの元の順序を維持しながら、重複レコードが「employee」テーブルから効果的に削除されます。実行後、テーブルには「EmpId」フィールドと「EmpSSN」フィールドに基づく一意の行のみが含まれます。
以上が主キーのない SQL テーブルから重複行を削除するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。