ホームページ >データベース >mysql チュートリアル >主キーなしで SQLite テーブルから重複行を効率的に削除するにはどうすればよいですか?
SQLite データベースの重複行の特定と削除
SQLite データベースでは、複数のエントリが同一のデータを共有する重複行が頻繁に発生します。一意の行を維持することが重要な状況では、重複を削除することが不可欠になります。この記事では、主キー列に依存せずに大規模な SQLite テーブルから重複行を削除する効率的な方法について説明します。
2 つの列 ('hash' と 'd') を持つ次のテーブルを考えてみましょう。このテーブル内の一部の行には、「hash」値と「d」値の両方が一致します。ただし、同一の「d」値は必ずしも一致する「ハッシュ」値を示すわけではありません。これを解決するために、重複する各行のインスタンスを 1 つだけ保持し、その他は破棄することを目指しています。
主キーがない場合に行を区別するために、SQLite は 'rowid' 疑似列を提供します。各行には一意の 'rowid' 値があり、それらを区別できるようになります。次のクエリは、'hash' と 'd' の一意の組み合わせごとに最小の 'rowid' を保持することにより、重複行を効果的に削除します。
DELETE FROM YourTable WHERE rowid NOT IN ( SELECT MIN(rowid) FROM YourTable GROUP BY hash, d );
'hash' と 'd' と並んで 'rowid' 列を利用することで、効果的に重複行を削除します。グループ化では、このクエリは、「hash」と「d」の一意の組み合わせごとに、最も低い「rowid」を持つ行を保持することを保証します。その結果、重複行はテーブルから効果的に削除されます。
以上が主キーなしで SQLite テーブルから重複行を効率的に削除するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。