--基础了解:
1) select distinct name from table --打开重复记录的单个字段
2) select * from table where fid in(Select min(fid) from table group by name)--打开重复记录的所有字段值
3) select * from table where name in(select name from table group by name having count(name)=1)--打开重复任意次数的所有记录
--筛选重复数据就用上面的第二条语句,但是如果我要进行有条件地查询,还需要一点点转换,下面是一个例子:
--testact表创建如下:
CREATE TABLE testact
(
tid int IDENTITY(1,1) PRIMARY KEY NOT NULL,--自增ID
TDate datetime DEFAULT getdate() NOT NULL,--发表时间
TUrl varchar(255) DEFAULT '' NOT NULL,--新闻链接地址
TTop smallint DEFAULT 0 NOT NULL --是否置顶
)
--基本数据
INSERT INTO testact(TDate,TUrl,TTop) VALUES(getdate(),'http://www.baidu.com',1)
INSERT INTO testact(TDate,TUrl,TTop) VALUES(dateadd(dd,1,getdate()), 'http://www.baidu.com',0)
INSERT INTO testact(TDate,TUrl,TTop) VALUES(getdate(),'http://www.google.com',0)
INSERT INTO testact(TDate,TUrl,TTop) VALUES(dateadd(dd,1,getdate()),'http://www.google.com',0)
INSERT INTO testact(TDate,TUrl,TTop) VALUES(getdate(),'http://www.baidu.com?a=1',1)
INSERT INTO testact(TDate,TUrl,TTop) VALUES(dateadd(dd,1,getdate()),'http://www.baidu.com?a=1',1)
INSERT INTO testact(TDate,TUrl,TTop) VALUES(dateadd(dd,2,getdate()),'http://www.baidu.com?a=1',0)
INSERT INTO testact(TDate,TUrl,TTop) VALUES(getdate(),'http://www.baidu.com?b=1',1)
INSERT INTO testact(TDate,TUrl,TTop) VALUES(dateadd(dd,2,getdate()),'http://www.baidu.com?b=1',1)
INSERT INTO testact(TDate,TUrl,TTop) VALUES(getdate(),'http://www.baidu.com?c=1',0)
/*
要求:比如说有一个新闻表testact,有字段:tid(自增ID),TDate(发表时间),TUrl(链接地址),TTop(是否置顶)。
表里数据TUrl(链接地址)可能会重复。
1)如果 TUrl(链接地址)重复,有一个置顶,一个不置顶的,则取置顶的数据(不管时间先后)。
2)如果 TUrl(链接地址)重复,都置顶的或都不置顶的,则取 发表时间(TDate)最新的数据。
3)如果 TUrl(链接地址)没有重复的,则直接取出。
4)最后对置顶和时间
.NET中C#的byte关键字映射.NET的Byte结构:表示一个 8 位无符号整数。Byte 值类型表示值介于 0 和 255 之间的无符号整数。
.NET中C#的short关键字映射.NET中的Int16:有符号 16 位整数,-32,768 到 32,767。
SQL SERVER中的tinyint:从 0 到 255 的整型数据。存储大小为 1 字节。
sbyte:存储8位带符号整数。sbyt ......