2

假设我有一个包含三个整数字段和一个字符串字段(只是数据)的表。

例如,它看起来像:

Id      Category    Value   Data
1       1           3       ...
2       1           4       ...
3       2           2       ...
4       2           4       ...
5       3           5       ...
6       3           6       ...
7       3           2       ...
8       4           1       ...

我想要做的是对于每个Category,在结果集中包含具有最小Value字段的行。在这种情况下,它将返回:

Id      Category    Value   Data
1       1           3       ...
3       2           2       ...
7       3           2       ...
8       4           1       ...

如何编写这样的查询?

谢谢!

4

3 回答 3

3
select T1.Id,
       T1.Category,
       T1.Value,
       T1.Data
from YourTable as T1
  inner join (
               select Category,
                      min(Value) as Value
               from YourTable
               group by Category
             ) as T2
    on T1.Category = T2.Category and
       T1.Value = T2.Value
于 2011-06-13T12:05:43.627 回答
1
select *
from mytable t
join (select category, min(value) as value from mytable group by 1) x
    on t.value = x.value and t.category = x.category

内部选择获取最终结果所需的类别和值,然后您连接回主表以获取所有列。

于 2011-06-13T12:02:42.177 回答
0
SELECT category, MIN(value) as Value
FROM table
GROUP BY category

使用类别列上的MIN函数和结果。GROUP BY

于 2011-06-13T11:55:51.917 回答