如何用SQL SERVER取分组数据第一条

请问将两个表合起来并将数据分组,然后要查找出每组数据的第一条的SQLSERVER的语句怎么写啊?谢谢表如下:table1IDnametimecontent1a10kkkk... 请问将两个表合起来并将数据分组,然后要查找出每组数据的第一条的SQL SERVER的语句怎么写啊?谢谢
表如下:
table1
ID name time content
1 a 10 kkkk
2 b 20 llll
3 c 2 dddd

table2
ID table1_ID user
1 1 dddd
2 1 eee
3 2 ffff
4 2 kkkk
5 1 ljk
表1中的ID和表2中的table1_ID是关联的。现要将表2合并到表1中。并且查询出合并后新表每个分组数据的第一条记录。SQL SERVER代码应该如何写?
展开
 我来答
大野瘦子
高粉答主

2019-10-11 · 繁杂信息太多,你要学会辨别
知道小有建树答主
回答量:1227
采纳率:100%
帮助的人:34.3万
展开全部

根据table1_id进行分组所得结果:

select * from (select a.id as a_id,a.name,a.time,a.content,b.id as b_id,b.user from table1 a inner join table2 b on a.id = b.table1_ID) new_tbl where b_id in (select min(id) from table2 group by table1_ID)

扩展资料:

注意事项

在SQL Server数据库中,使用top关键字:SELECT TOP number|percent column_name(s) FROM table_name

在MySQL数据库中,使用LIMIT关键字:SELECT column_name(s) FROM table_name LIMIT number

例子:SELECT * FROM Persons LIMIT 1 

select   bookName   from   book   where   price   >   20   limit   1; 

limit   1;
or
limit   0,1;

在Oracle数据库中,使用ROWNUM关键字:

SELECT column_name(s) FROM table_name WHERE ROWNUM <= number

例子:SELECT * FROM Persons WHERE ROWNUM <= 1

babyAn涩
推荐于2017-09-02 · 知道合伙人金融证券行家
babyAn涩
知道合伙人金融证券行家
采纳数:7678 获赞数:132050
2014年于上海市商贸旅游学校毕业,专业会计。后就读于上海市同济大学网络教育学院。

向TA提问 私信TA
展开全部

用row_number函数可以解决。

1、创建测试表及插入数据:

create table test
(id int,
name varchar(10),
score int,
classname varchar(20));

insert into test values (1,'张三',100,'一班');
insert into test values (2,'李四',89,'一班');
insert into test values (3,'王五',97,'一班');
insert into test values (4,'赵六',87,'二班');
insert into test values (5,'孙七',94,'二班');
insert into test values (6,'杨八',76,'二班');

2、查出每个班级的成绩第一名,执行以下语句:

select t.* from
(select test.*,row_number() over (partition by classname order by score desc) rn 
from test) t
where rn=1;

3、结果截图:

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
MuCloudLi
2010-03-26 · TA获得超过480个赞
知道小有建树答主
回答量:802
采纳率:0%
帮助的人:744万
展开全部
--不知道你需要依据什么分组,如下是根据table1_id进行分组所得结果
select * from (select a.id as a_id,a.name,a.time,a.content,b.id as b_id,b.user from table1 a inner join table2 b on a.id = b.table1_ID) new_tbl where b_id in (select min(id) from table2 group by table1_ID)
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友f192af9
2018-11-05 · TA获得超过111个赞
知道小有建树答主
回答量:127
采纳率:0%
帮助的人:38.4万
展开全部
select count(*) from (select count(*) from 表1 a
left join 表2 b on a.字段1=b.字段1
left join 表3 c on a.字段1=c.字段1
group by 字段1 order
by c.字段2 desc) as abcd limit 1
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
yangorange560
2010-03-26
知道答主
回答量:44
采纳率:0%
帮助的人:15.3万
展开全部
在第一个select 后面直接加一个 top 1,不就可以了吗!?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式