获取每个组中的第一行及其详细信息

时间:2015-07-24 15:27:20

标签: mysql sql

我的表格如下:

id   Branch           type
1    breakfast        xxxx
2    breakfast        yyyy
3    breakfast        zzzz
4    lunch            aaaa
5    lunch            xxxx
6    dinner           xxxx
7    dinner           yyyy
8    dinner           yyyy 

id是主键和自动增量键。现在早餐有3种,午餐有2种,晚餐有3种。

我想要所有分支,但只选择一种类型或第一种类型。

我们怎么做?

例如,我必须得到以下结果:

id   Branch           type
1    breakfast        xxxx
4    lunch            aaaa
6    dinner           xxxx

4 个答案:

答案 0 :(得分:1)

select id, branch, type group by branch order by id

答案 1 :(得分:1)

如果您不想依赖group by子句的MySQLs strange handling(我相信在最近的版本中已禁用),那么这将适用于任何符合ANSI SQL的数据库(包括SQL Server,你标记了问题:

select t.* 
from table t
join (
  select min(id) min_id, branch
  from table
  group by branch
) x on t.id = x.min_id and t.branch = x.branch;

Sample SQL Fiddle

答案 2 :(得分:0)

SELECT branch, MIN(id), MIN(type) FROM [Table] GROUP BY branch

将重新排列您的列,但它应该产生您想要的。

答案 3 :(得分:0)

您可以使用mingroup by函数轻松完成此操作:

select min(t.id) as id,t.branch,min(t.type) as type
from test t
group by t.branch
order by min(t.id);

SQL Fiddle Demo