SQL使用GROUPBY或DISTINCT返回第一条记录
我有一张这样的桌子:SQL使用GROUPBY或DISTINCT返回第一条记录,sql,sql-server,sql-server-2005,Sql,Sql Server,Sql Server 2005,我有一张这样的桌子: group id 1 10 1 11 1 12 2 13 3 14 group id 1 10 2 13 3 14 我想返回每组的第一条记录,因此我的表应该返回如下内容: group id 1 10 1 11 1
group id
1 10
1 11
1 12
2 13
3 14
group id
1 10
2 13
3 14
我想返回每组的第一条记录,因此我的表应该返回如下内容:
group id
1 10
1 11
1 12
2 13
3 14
group id
1 10
2 13
3 14
在SQL中执行此操作的最佳方法是什么?这就足够了:
SELECT group, min(id) id FROM table
GROUP BY group
考虑到“第一个”考虑的是最小数量。这就足够了:
SELECT group, min(id) id FROM table
GROUP BY group
请注意,对于“第一个”,这是考虑最小数量。Group by将只返回每个组的第一行。所以按意愿分组就足够了
SELECT * FROM `your_table`
GROUP BY group
sql FIDLE将只返回每个组的第一行。所以按意愿分组就足够了
SELECT * FROM `your_table`
GROUP BY group
sql FIDLE假设较早的记录总是具有较小的id安全吗?假设较早的记录总是具有较小的id安全吗?使用
min
不能保证返回每个组的第一条记录使用min
不能保证返回每个组的第一条记录这不起作用,因为问题说明我需要返回group和id,因此id需要在group by子句中返回5行(不是问题所在),或者在所选的answerhi@chirs中进行聚合,可能我不理解您想要什么,但您是否尝试运行该查询。请注意,min()不会选择每个组的第一条记录。它与sql server 2005中的工作方式不同,不确定sql FIDLE使用的是什么。这不起作用,因为问题说明我需要返回group和id,所以id需要在group by子句中,返回5行(不是所问的内容)或者像在选定的answerhi@chirs中一样,我可能不明白您想要什么,但您是否尝试运行该查询。请注意,min()不会选择每个组的第一条记录。它不像sql server 2005中那样工作,不确定sql FIDLE使用什么