2

テーブルId、State、City に 3 つの列があります。各州には数十の都市が含まれています。私がやりたいのは、一意の州を選択して ID を取得することだけです。

SELECT DISTINCT(State) FROM LocationTable;

これは完全に機能しますが、IDも取得する必要があります。私は試した:

SELECT DISTINCT(State), Id FROM LocationTable 

SELECT State, Id FROM LocationTable GROUP BY State, Id

しかし、それでも一意の状態は返されません。基本的には、この MySQL クエリを MSSQL で実行する必要があります。

SELECT UNIQUE(State), Id FROM LocationTable;

ありがとう!

4

3 に答える 3

1

アンドリューの答えに基づいて構築:

DISTINCT後続の列だけでなく、データ セット全体に適用されます。

SELECT distinct State, MAX(Id) 
FROM LocationTable 
GROUP BY state

Id数値的に最大のものを提供します。ただし、アンドリューが言ったように、Id取得するものをどのように制限するかを選択する必要があります。

実際の例については、これを参照してください: http://sqlfiddle.com/#!3/f5b42/5

于 2012-08-18T17:35:26.253 に答える
0

関数ではなく、distinct をキーワードとして試してください。

SELECT DISTINCT State,Id FROM LocationTable
于 2012-08-18T17:31:09.413 に答える
0
SELECT State, Id FROM LocationTable GROUP BY State, Id 

一致するが ID が異なる 2 つの州が見つかった場合、どのように処理すると予想されますか? ID ごとに 1 回、2 回状態を返します。

あなたのデータは次のようなものだと思います:

 ID, State, City
  1   WA    Seattle
  2   WA    Tacoma

州の ID が必要だと言うときは、最大、最小など、必要な ID を選択する必要があります。州の ID は 1 つではありません。

コメントへの返信: 次のようなものかもしれません...

Select max(cast(id as binary(16)), state from locationtable group by state

しかし、ここでは ID の有効性が本当に問題になっていると思います。ID をどうするかというと、その状態のすべての行ではなく、1 行のみになります。(一意の識別子フィールドであるという事実を処理するためにキャストします)

于 2012-08-18T17:31:46.737 に答える