如何在查询结果集中屏蔽相同的行?
问题是这样的
我在数据库中有一个考勤表kqdata,如下:
姓名 部门代码 时间
张三 关务部 13:01
李四 关务部 13:12
王五 关务部 13:13
张三 关务部 13:12
我想得到的查询结果中只要一个张三的记录,如下:
张三 关务部 13:01
李四 关务部 13:12
王五 关务部 13:13
------解决方案-------------------- create table kqdata(姓名 varchar(10),部门代码 varchar(20),时间 varchar(10))
insert kqdata select '张三 ', '关务部 ', '13:01 '
union all select '李四 ', '关务部 ', '13:12 '
union all select '王五 ', '关务部 ', '13:13 '
union all select '张三 ', '关务部 ', '13:12 '
select * from kqdata a where not exists
(
select 1 from kqdata where 姓名=a.姓名 and 时间 <a.时间
)
/*
姓名 部门代码 时间
---------- -------------------- ----------
张三 关务部 13:01
李四 关务部 13:12
王五 关务部 13:13
(所影响的行数为 3 行)
*/