9

クエリすると

select distinct Name from Emp;

従業員表

ID名
1サム
2 トム
3 サム

このクエリは、重複した名前または最後の個別の名前 (ID=3) から最初の個別の名前 (ID=1) を返しますか?

このコンテキストで、distinct キーワードは実際にどのように機能しますか?

4

2 に答える 2

8

ここには誤解があると思います。クエリはレコードを返さ、個別の列値のみを返します。あなたの例では、「サム」と「トム」です。

安全に期待できる特定の順序はありません。自然な順序、またはデータベースで処理される順序 (完全にデータベースの実装に依存)、または半ランダム (セット内のアイテムの反復など) の場合があります。結果がデータから取得されたか、キャッシュから取得されたかによっても、順序が異なる場合があります。

特定の注文が必要な場合は、それを注文基準として指定します。

select distinct Name from Emp order by Name asc

個別の値とそれを含む最初のレコードが必要な場合は、次を使用しますgroup by

select min(ID), Name from Emp group by Name
于 2013-09-03T10:26:02.577 に答える