32

1つの列にのみ個別の演算子を使用してテーブルから複数の列を選択するSQLクエリを作成しようとしています。

テーブルはシンプルです。列は次のとおりです。

tblFruit_ID, tblFruit_FruitType, tblFruit_FruitName
int          NVarChar            Text

すべてのtblFruit_FruitTypeとそれに対応するtblFruit_IDを選択しようとしています。

私が試してみました:

Select Distinct(tblFruit_FruitType), tblFruit_ID FROM tblFruit

-個別の結果だけでなく、すべての結果を返します

Select tblFruit_FruitType, tblFruit_ID FROM tblFruit Group By tblFruit_FruitType

-列tblFruit_IDのエラーは、集計関数にもGROUP BY句にも含まれていないため、選択リストでは無効です。

Select tblFruit_FruitType, tblFruit_ID FROM tblFruit Group By tblFruit_FruitType, tblFruit_ID

-個別の結果だけでなく、すべての結果を返します

私もこれらの同様の投稿をチェックアウトし、何も機能させることができませんでした:(

mySQLは、対応する他の列とともに1つの列DISTINCTを選択します

1列のSQLServerDistinct Union

うまくいけば、これは答えのための十分な情報です。

お時間をいただきありがとうございます!

編集(サンプルデータと望ましい結果)

tblFruit_ID, tblFruit_FruitType, tblFruit_FruitName
int          NVarChar            Text
1            Citrus              Orange
2            Citrus              Lime
3            Citrus              Lemon
4            Seed                Cherry
5            Seed                Banana

結果:

1            Citrus
4            Seed
4

7 に答える 7

42
select * from tblFruit where
tblFruit_ID in (Select max(tblFruit_ID) FROM tblFruit group by tblFruit_FruitType)
于 2012-08-13T15:26:45.707 に答える
24

グループ化していない列に対して集計関数を使用する必要があります。この例では、Min 関数を任意に選択しました。FruitType同じ値を持つ行を結合しています。FruitTypeたとえば、値が同じで値が異なる2 つの行がある場合Fruit_Id、システムはどうすればよいでしょうか?

Select Min(tblFruit_id) As tblFruit_id
    , tblFruit_FruitType
From tblFruit
Group By tblFruit_FruitType

SQL フィドルの例

于 2012-08-13T15:16:08.963 に答える