请问将两个表合起来并将数据分组,然后要查找出每组数据的第一条的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代码应该如何写?
根据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
用row_number函数可以解决。
1、创建测试表及插入数据:
create table test2、查出每个班级的成绩第一名,执行以下语句:
3、结果截图:
如何用SQL SERVER取分组数据第一条
根据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 查询,一共三列,怎样查出第一个列值相同,第二列值最大的第...
《按某列分组,求另一列最大或最小值所在整行数据的方法》利用子查询,试一下,很好用的(a1可根据需要去掉):select a2,a1 from tablename where taborder=(select max(taborder) from tablename a where a.a2=tablename.a2)查出结果为 a,2 b,5 c,6 ...
Oracle分析函数:First
1. 使用DISTINCT与不使用DISTINCT,对FIRST_VALUE函数是有区别的,使用DISTINCT的FIRST_VALUE函数效果等类似于SQL Server中的first(),取得所有分组中的第一条数据。如果不使用DISTINCT,FIRST_VALUE函数的执行结果,按照楼上的例子,按照POS分组,对于每个NAME,都返回本组的第一个值(first_value)SELECT DIS...
sql根据某一个字段重复只取第一条数据
select * from team where teamId in (select teamId from team group by teamId having count(teamId) > 1) 删除表中多余的重复记录,重复记录是根据单个字段(teamId)来判断,只留有rowid最小的记录 delete from team where teamName in(select teamName from team group by teamName having ...
SQL SERVER分组后查询最大日期的ID
用分析函数row_number来给分组内的记录编号,然后取编号值为1的记录即可。select s.*from ( select v.*, row_number() over (partition by b order by c desc) as order_num from #b v) swhere s.order_num = 1
SQLServer中使用语句取各分类中的前几条记录
建立表结构如下:CREATE table [dbo].[tmp_Trans](IDintidentity,PO_NO varchar(20) null,PO_Itemno varchar(20) null,Qty numeric(18,6) null,Trans_Date datetime null,Doc_no varchar(20) null)要求取相同PO_NO按Trans_Date倒序排序的前两条记录。1.Where子句嵌套SELECT的方式。在嵌套的...
sql查询 分组后 每组某字段值最大的一行所有列
1、第一个方法,需要考虑ID有重复值的问题,如果最大值存在重复值,那么结果也重复。SELECT * FROM 员工信息变化表 T1 WHERE id = (SELECT Max (id) FROM 员工信息变化表 T2 WHERE T1.员工ID = T2.员工ID)2、第二个方法:该语句是在SQL Server中编写的,应该不适用于MySQ和Oracle。排...
SQL server 里面如何实现 First() 的功能?
select name,status,min(datatime) from table group by name
sql server 中group by 的用法
就是分组进行譬如,学生表student里有多个班级(classid)的学生,现在要统计每个班有多少学生,就用select classid,count(*)as num from student group by classid,显示的结果就是班级号和班级的学生人数
sql server 2008中如何取某字段最大值所在的一条数据(多个字段)_百度知...
select * from ( select id,name,score,date,ROW_NUMBER() over(PARTITION by name order by score desc,date desc) as num from tablename ) T where T.num <= 1 order by name