2012-05-08 13 views
7

私はこのクエリが正確に何をするかを理解しようとしています:MySQL 1つの行の一意性に基づいてDISTINCT複数の列を選択しますか?

SELECT DISTINCT `state`, `state_name` FROM `geo` ORDER BY `state_name` ASC 

私がやろうとしているすべては、2列(状態およびSTATE_NAME)を選択している、私はのために重複する値を持っていないだけのユニークな行をしたいです状態フィールド。 state_nameフィールドに重複した値があるかどうかは気にしません。

私のクエリでは、両方の列が一意かどうかをチェックしていますか?

答えて

18

DISTINCTので、唯一の明確な行を返します。

は、一意性またはちょうど状態のために、両方の列をチェックし、私のクエリですか?

両方のカラム

また、代わりに、GROUP BYに切り替えることができます。

SELECT `state`, `state_name` FROM `geo` group by 'state', 'state_name' ORDER BY `state_name` ASC 
+0

ありがとうございます。 :) – Addy

1

これは、stateとstate_nameの固有の組み合わせを確認しています。 Distinctは、選択リストに含まれるすべての列で機能します。唯一のユニークな状態値を含めるように

、単に個別の状態を選択し