日期:2014-05-17  浏览次数:20488 次

每隔时间就添加若干条数据,现在只想保留最后一次添加的怎么做
表结构

CREATE TABLE tb(
[公司] [nvarchar](50) COLLATE Chinese_PRC_CI_AS NULL,
[产品] [nvarchar](50) COLLATE Chinese_PRC_CI_AS NULL,
[CreateTime] [datetime] NULL,
[id] [int] IDENTITY(1,1) NOT NULL
) ON [PRIMARY]

原数据
公司 产品  更新时间
a司  苹果  2013-1-12
a司  香蕉  2013-1-12
a司  苹果  2013-1-10
a司  香蕉  2013-1-10
b司  苹果  2013-1-10
b司  香蕉  2013-1-10





b司 最后一次是10号更新的,所以保留
只保留最后一次添加时间 的记录,如何操作




1删除后表内数据:

a司  苹果  2013-1-12
a司  香蕉  2013-1-12
b司  苹果  2013-1-10
b司  香蕉  2013-1-10


2不删除只查询的结果:

a司  苹果  2013-1-12
a司  香蕉  2013-1-12
b司  苹果  2013-1-10
b司  香蕉  2013-1-10


这两条语句 该怎么写

------解决方案--------------------
CREATE TABLE tb3(
[公司] [nvarchar](50) COLLATE Chinese_PRC_CI_AS NULL,
[产品] [nvarchar](50) COLLATE Chinese_PRC_CI_AS NULL,
[CreateTime] [datetime] NULL,
[id] [int] IDENTITY(1,1) NOT NULL
) ON [PRIMARY]

insert into tb3
select 'a司',  '苹果',  '2013-1-12'
union all
select 'a司' , '香蕉',  '2013-1-12'
union all
select 'a司' , '苹果',  '2013-1-10'
union all
select 'a司' , '香蕉', '2013-1-10'
union all
select 'b司' , '苹果',  '2013-1-10'
union all
select 'b司' , '香蕉', '2013-1-10'



----删除后
delete from tb3 
  where id not in 
   (
select id from 
 (
  select 公司,产品,MAX(CreateTime)time from tb3
group by 公司,产品
  )a
left join  
 (
  select * from tb3
  )b
 on a.公司=b.公司 
 and a.产品=b.产品 
 and a.time=b.CreateTime
    )


----查询
select 公司,产品,MAX(CreateTime)
  from tb3
  group by 公司,产品
  order by 公司






------解决方案--------------------

CREATE TABLE tb
([公司] [nvarchar](10) COLLATE Chinese_PRC_CI_AS NULL,
 [产品] [nvarchar](10) COLLATE Chinese_PRC_CI_AS NULL,
 [CreateTime] [date] NULL,
 [id] [int] IDENTITY(1,1) NOT NULL
) ON [PRIMARY]

insert into tb
select 'a司',&nbs