同じ 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 サイトの他の関連記事を参照してください。