ホームページ > データベース > mysql チュートリアル > SQL SELECT ステートメントの順序を維持しながら重複行を削除するにはどうすればよいですか?

SQL SELECT ステートメントの順序を維持しながら重複行を削除するにはどうすればよいですか?

DDD
リリース: 2025-01-07 09:21:42
オリジナル
666 人が閲覧しました

How Can I Remove Duplicate Rows While Maintaining Order in a SQL SELECT Statement?

同じ SELECT ステートメントでの DISTINCT と ORDER BY の使用

MonitoringJob テーブルから カテゴリ 列を取得し、順序付けする SELECT ステートメントを実行した後CreationDate 列の結果を降順に並べると、データベースが重複した値を返す場合があります。指定された順序を維持しながら重複を排除するには、DISTINCT キーワードを使用できます。ただし、DISTINCT だけを使用するだけでは不十分な場合があります。

この例では、ORDER BY 句が重複値を含む CreationDate 列に依存しているため、DISTINCT キーワードを単独で使用しても問題は解決されません。これに対処するには、MAX() などの集計関数を DISTINCT キーワードと組み合わせて、重複を除外しながら特定の列に基づいて結果を並べ替えることができます。さらに、DISTINCT 操作で使用される列に基づいて一意のカテゴリを作成するには、GROUP BY 句が必要です。

適切な解決策は次のとおりです。

SELECT DISTINCT Category, MAX(CreationDate)
FROM MonitoringJob
GROUP BY Category
ORDER BY MAX(CreationDate) DESC, Category
ログイン後にコピー

この変更されたステートメントにより、重複が確実に行われます。 MAX(CreationDate) 列で並べ替えてからカテゴリで並べ替えることにより、目的の順序を維持しながら削除されます。その結果、最新の CreationDate 値に基づいて個別のカテゴリが降順でリストされた、目的の出力が取得されます。

以上がSQL SELECT ステートメントの順序を維持しながら重複行を削除するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート