俩表合并查询并且过滤相同的根据某个字段
现在有两张表表结构一模一样 表结构 :
第一张表
id name date
1 1号 2001-10-21
2 2号 2001-10-20
第二张表:
id name date
1 1号 2001-10-22
3 3号 2001-10-22
现在想把两张表中的数据全查出来并且两表中id相同的记录根据date字段过滤只要date为最新的那条记录,不知道sql该怎么写,求帮忙。。
想显示的结果:
id name date
1 1号 2001-10-22
2 2号 2001-10-20
3 3号 2001-10-23
[解决办法]
SELECT id ,
name ,
MIN(date) date
FROM ( SELECT id ,
name ,
date
FROM tb1
UNION ALL
SELECT id ,
name ,
date
FROM tb2
) a
GROUP BY id ,
name
if object_id('table1') is not null
drop table table1
create table table1
(
id int,
name nvarchar(20),
[date] date
)
go
insert into table1
select 1,'1号','2001-10-21' union all
select 2,'2号','2001-10-20'
if object_id('table2') is not null
drop table table2
create table table2
(
id int,
name nvarchar(20),
[date] date
)
go
insert into table2
select 1,'1号','2001-10-22' union all
select 3,'3号','2001-10-22'
select isnull(table1.id,table2.id) id,
isnull(table1.name,table2.name) name,
case when isnull(table1.date,'1900-01-01')>isnull(table2.date,'1900-01-01') then table1.date else table2.date end [Date]
from table1
full join table2 on table1.id =table2.id
--结果
--11号2001-10-22
--22号2001-10-20
--32号2001-10-22