首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

俩表归并查询并且过滤相同的根据某个字段

2012-12-31 
俩表合并查询并且过滤相同的根据某个字段 现在有两张表表结构一模一样表结构 :第一张表idnamedate11号2001

俩表合并查询并且过滤相同的根据某个字段
 现在有两张表表结构一模一样  表结构 :  
第一张表
   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

热点排行