SQL クエリを使用する場合、DISTINCT を使用して重複する値を削除し、次を使用して結果を並べ替えることの両方が望ましい場合があります。までに注文してください。ただし、これらの句を 1 つのステートメントで一緒に使用しようとすると、予期しない動作が発生する可能性があります。この記事では、この問題に対処し、フィルタリングと並べ替えの両方を適切に実現するための解決策を提供します。
次のクエリを考えてみましょう。
SELECT Category FROM MonitoringJob ORDER BY CreationDate DESC;
このクエリは次のクエリを返します。結果はCreationDate列の降順で並べられます。ただし、Category 列に重複した値がある場合、それらは削除されません。
重複を削除するには、DISTINCT キーワードを使用してみるとよいでしょう。
SELECT DISTINCT Category FROM MonitoringJob ORDER BY CreationDate DESC;
ただし、このクエリはDISTINCT が指定されている場合、非集計列では ORDER BY が許可されないため、エラーで失敗します。
この問題を解決するには、集計関数と GROUP BY 句を使用して、結果をカテゴリ列ごとにグループ化します。これにより、DISTINCT キーワードで重複するカテゴリ値を削除できると同時に、ORDER BY 句で CreationDate 列で結果を並べ替えることができます。
SELECT DISTINCT Category, MAX(CreationDate) FROM MonitoringJob GROUP BY Category ORDER BY MAX(CreationDate) DESC, Category;
このクエリ内:
以上が単一の SQL SELECT ステートメントで DISTINCT と ORDER BY を併用するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。