首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >SQL组的第一个

SQL组的第一个
EN

Stack Overflow用户
提问于 2013-03-28 23:35:46
回答 4查看 121关注 0票数 1

我有一张桌子

代码语言:javascript
运行
复制
ID | value1 |value2
1  | 15     | A
2  | 15     | B
3  | 16     | D
4  | 16     | A
5  | 16     | C

作为结果,我希望只看到value1的第一条记录(分组依据?)如下所示:

代码语言:javascript
运行
复制
ID | value1 |value2
1  | 15     | A
2  | 16     | D

我可以使用以下命令来实现:

代码语言:javascript
运行
复制
select * from vals
group by value1 

但是,在SQL server中,我是否总能确保他获得组中的第一条记录(ID最低)?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2013-03-28 23:39:06

你实际上不能这样做:

代码语言:javascript
运行
复制
select * from vals
group by value1 

因为它甚至不会执行,它会返回每一行,因为每一行上的ID都不同。因此,如果您尝试获取每个value1的第一行,则可以执行以下操作:

代码语言:javascript
运行
复制
select * from vals
where id in (select min(id) from vals group by value1)

这将使您获得每个 by value1的第一行。

票数 4
EN

Stack Overflow用户

发布于 2013-03-28 23:41:37

代码语言:javascript
运行
复制
;WITH cte AS 
(
    SELECT MIN(id)AS id FROM vals
    GROUP BY value1 
)
SELECT vals.* FROM cte
INNER JOIN vals ON vals.id = cte.id
票数 1
EN

Stack Overflow用户

发布于 2013-03-28 23:41:58

你当然可以:

代码语言:javascript
运行
复制
 Select * From vals v
 Where id = (Select Min(id)
             From vals 
             Where value1 = v.value1)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15686001

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档