SQL查询多列仅在一列上使用不同

Ste*_*eve 21 sql-server select

我试图编写一个SQL查询,从一个表中选择多个列,只在一列上使用distinct运算符.

桌子很简单.列是:

tblFruit_ID, tblFruit_FruitType, tblFruit_FruitName
int          NVarChar            Text
Run Code Online (Sandbox Code Playgroud)

我试图选择所有tblFruit_FruitType及其对应的tblFruit_ID.

我试过了:

Select Distinct(tblFruit_FruitType), tblFruit_ID FROM tblFruit
Run Code Online (Sandbox Code Playgroud)

- 回报所有结果,而不仅仅是截然不同

Select tblFruit_FruitType, tblFruit_ID FROM tblFruit Group By tblFruit_FruitType
Run Code Online (Sandbox Code Playgroud)

列tblFruit_ID的错误在选择列表中无效,因为它不包含在聚合函数或GROUP BY子句中.

Select tblFruit_FruitType, tblFruit_ID FROM tblFruit Group By tblFruit_FruitType, tblFruit_ID
Run Code Online (Sandbox Code Playgroud)

- 回报所有结果,而不仅仅是截然不同

我也检查了这些类似的帖子,无法得到任何工作:(

mySQL选择一列DISTINCT,以及相应的其他列

SQL Server Distinct 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
Run Code Online (Sandbox Code Playgroud)

结果:

1            Citrus
4            Seed
Run Code Online (Sandbox Code Playgroud)

val*_*lex 30

select * from tblFruit where
tblFruit_ID in (Select max(tblFruit_ID) FROM tblFruit group by tblFruit_FruitType)
Run Code Online (Sandbox Code Playgroud)


Tho*_*mas 23

您必须对未进行分组的列使用聚合函数.在这个例子中,我随意选择了Min函数.您正在组合具有相同FruitType值的行.如果我有两行具有相同的FruitType值但Fruit_Id值不同,例如,系统应该做什么?

Select Min(tblFruit_id) As tblFruit_id
    , tblFruit_FruitType
From tblFruit
Group By tblFruit_FruitType
Run Code Online (Sandbox Code Playgroud)

SQL小提琴示例