求一条Sql语句,望各位大侠解惑 有用户表N张,分布为[UserInfo_1],.......[UserInfo_N],表结构相同如下: USE [test] GO SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO SET ANSI_PADDING ON GO CREATE TABLE [dbo].[UserInfo]( [GroupId] [int] NOT NULL, [UserId] [int] NOT NULL, [UserName] [varchar](50) COLLATE Chinese_PRC_CI_AS NOT NULL, [Reserved1] [varchar](50) COLLATE Chinese_PRC_CI_AS NULL, [Reserved4] [nvarchar](max) COLLATE Chinese_PRC_CI_AS NULL, [CreateDate] [datetime] NULL ) ON [PRIMARY] GO SET ANSI_PADDING OFF 其中在同一张表中UserId与UserName都是对应的;同一表同一GroupId不会出现相同UserId,但在不同表中前一条的不成立,即不同表相同UserName的UserId不同,这样就出现了相同GroupId在不同表出现了相同UserName。表的设计问题在此不讨论,应为这已经不是我能改变的了。当然可以给给意见。 [UserInfo_1] GroupId UserId UserName ..... 1 1 jack ..... 1 2 sfs ..... 1 3 gf ..... 1 4 gfg 1 5 eert 1 6 asfd ——————————————————————
------解决方案--------------------
--查询 select t.* from UserInfo_1 t where 时间 = (select max(时间) from UserInfo_1 where GroupId = t.GroupId and UserName = t.UserName)
select t.* from UserInfo_1 t where not exists (select 1 from UserInfo_1 where GroupId = t.GroupId and UserName = t.UserName and 时间 > t.时间)
--删除 delete UserInfo_1 from UserInfo_1 t where 时间 not in (select max(时间) from UserInfo_1 where GroupId = t.GroupId and UserName = t.UserName)
------解决方案-------------------- 用sql保留数据,治标不治本,如果你的表继续写入数据,还是会有错误数据,保证数据唯一性,从表,程序上都可以下手。
------解决方案--------------------