declare @Tab table
(Num int, Name varchar(2), Time DATETIME)
insert into @tab select 1 ,'a', '2009/05/01'
insert into @tab select 1 ,'a', '2009/05/02'
insert into @tab select 1 ,'a', '2009/05/03'
insert into @tab select 2 ,'b', '2009/05/04'
insert into @tab select 2 ,'b', '2009/05/05'
insert into @tab select 3 ,'c', '2009/05/06'
insert into @tab select 3 ,'c', '2009/05/07'
insert into @tab select 5 ,'e', '2009/05/08'
insert into @tab select 1 ,'a', '2009/05/09'
insert into @tab select 1 ,'a', '2009/05/10'
select * from @Tab t where not exists(select 1 from @Tab where num=t.num and [time]<t.[time])
/*
Num Name Time
----------- ---- -----------------------
1 a 2009-05-01 00:00:00.000
2 b 2009-05-04 00:00:00.000
3 c 2009-05-06 00:00:00.000
5 e 2009-05-08 00:00:00.000
(4 行受影响)
*/
select * from test where b in (select max(id) from test group by a)
适用于所有数据库:
select t1.a,t1.b,t1.c
from test t1
inner join
(seelct a,max(b) as b from test group by a) t2
on t1.a=t2.a and t1.b=t2.b
适用于所有数据库:
select a,b,c
from(
select a,b,c
,row_number()over(partition by a order by b desc) rn
from test
)
where rn=1
分享到:
相关推荐
按某一字段分组取最大(小)值所在行的数据
表:t_test -------------------------------------- id(int) cost(int) des Autoid(id) -------------------------------------- 1 10 aaaa 1 1 15 bbbb 2 1 20 cccc 3 ...取每一类id中cost最大的纪录
–按某一字段分组取最大(小)值所在行的数据 代码如下: /* 数据如下: nameval memo a 2 a2(a的第二个值) a 1 a1–a的第一个值 a 3 a3:a的第三个值 b 1 b1–b的第一个值 b 3 b3:b的第三个值 b 2 b2b2b2b2 b 4 b4b4 b ...
使用Linq语法与Lambda表达式分组取泛型数组某列的最小值/最大值
本篇文章详细介绍了如何使用MySQL实现分组取n条最大记录的功能。通过精心设计的SQL查询语句,我们可以有效地解决这类问题。这种方法不仅适用于上述具体场景,还可以扩展应用于其他类似的需求,例如按不同标准分组并...
总结来说,无论是使用C# LINQ to SQL还是SQL查询,获取相同记录下日期最大的一条的关键在于正确地分组数据并找到每个组内的最大值。在C#中,我们可以利用LINQ的表达式树将这些查询逻辑转换为SQL语句,而在SQL中,...
Oracle左连接返回多条记录中一条记录的查询语句,更具指定条件分组排序,返回各组中第一条记录
假设我们需要从 `person_real_time_bill` 表中找出所有金额小于零的账单,并且对于同一个 `serial_number`,只保留最新的一条记录。此时,上面的 SQL 语句就能很好地满足需求。 ### 总结 通过以上分析,我们不仅...
在MySQL中,获取分组后每组的最大值是一项常见的数据分析任务,这通常涉及...这不仅能确保每个分组只返回一条记录,而且返回的是该分组内分数最高的记录。在实际应用中,要根据数据库的特性和需求选择合适的查询方式。
以下将详细介绍如何在SQL中排除重复结果并只取字段的最大值。 首先,我们可以使用子查询来实现这个目标。如给定的部分内容所示,这里有一个例子: ```sql select * from [Sheet1$] a where ID not exists ( ...
本文将详细讲解如何使用SQL语句来查询并处理这些重复记录,主要聚焦于分组后二次汇总的方法。 首先,我们要明确处理重复记录的两种常见情况: 1. **Num和Name相同的重复值记录**:在这种情况下,我们通常只保留一...
4. 使用`GROUP BY [col1]`按`Col1`字段进行分组,对每个分组取`MAX([col2])`作为最大值。 示例代码如下: ```sql DECLARE @T TABLE ([Col1] INT, [Col2] INT, [Col3] INT, [Col4] INT, [Col5] INT, [Col6] INT, ...
如果某个分组中包含超过一条记录,则返回该分组的所有记录。这种方式通常用于查找重复记录,并可进一步用于删除这些重复项。 ### 方法三:使用子查询删除重复记录 有时候我们需要直接删除重复的数据行,这可以通过...
- 确定当前记录和下一条记录之间相差的天数:使用数据库的日期差函数。 8. 日期操作 - SYSDATE能得到的信息:解释SYSDATE函数返回的当前系统日期和时间。 - 确定一年是否为闰年:使用数据库提供的函数或逻辑判断...
13、说明:一条sql 语句搞定数据库分页 select top 10 b.* from (select top 20 主键字段,排序字段 from 表名 order by 排序字段 desc) a,表名 b where b.主键字段 = a.主键字段 order by a.排序字段 具体实现: ...
2. 题目29:该题要求在不使用MIN函数的情况下找到最小值,通过`SELECT TOP 1 num FROM Test ORDER BY num`实现了这一目标,利用`ORDER BY`对num列进行升序排序,然后取第一条记录即可得到最小值。 3. 题目33:这是...
在进行 GROUP BY 分组时,如果某列存在空值,那么这些空值将被视为一个独立的组,从而影响分组结果。 7. 结合分组,使用集合函数求每个同学的平均分、总的选课记录、最高成绩、最低成绩和总成绩 在进行分组时,可以...
- **INSERT VALUES语句**:用于向表中插入一条新记录。 - **INSERT SELECT语句**:用于从一个表复制数据到另一个表。 - **UPDATE语句**:用于更新表中的现有记录。 - **DELETE语句**:用于从表中删除记录。 - **从...
6. **第09章**:可能涵盖系统信息函数,比如@@ROWCOUNT(返回最后一条SQL语句影响的行数)、@@IDENTITY(获取最后一个自增字段的值)等,这些函数有助于跟踪和调试查询。 7. **第10章**:可能讨论到分组和分析函数...