电脑卡屏死机画面定格冬天天死机 卡画面死机。电脑卡屏死机画面定格冬天天死机 卡画面死机。

本帖子已过去太久远了,不再提供回复功能。欢迎加入我们,一同切磋技术。 &
用户名: &&&
密 码: &
共有 13338 人关注过本帖
标题:在一张表中怎样去掉某个字段得重复的数据?
等 级:ID已被封
帖 子:50
结帖率:100%
&&问题点数:0&&回复次数:11&&&
在一张表中怎样去掉某个字段得重复的数据?
如题,,假如我的数据库里有一张表存的数据量很大,但是有很多是某一个字段数据重复的,怎样去掉这重复数据呢?
K&&&&&& KK&&&&&&&&&KKK&&&&&&KKKKK
12&&&&&& 221&&&&&& 444&&&&&&&&66565
54&&&&&&6565&&&&&& 4896&&&&&& 655+
36&&&&&& 66&&&&&&&&488&&&&&& 5464&&&&&&&&&&&&
98&&&&&&&&546+&&&&&444&&&&&&&&+95+5
上表中,在KKK列里是重复的,有两行数据,怎样可以把其中的一条去掉呢?只保留一条..变成如下表:
K&&&&&& KK&&&&&&&&&KKK&&&&&&KKKKK
54&&&&&&6565&&&&&& 4896&&&&&& 655+
36&&&&&& 66&&&&&&&&488&&&&&& 5464&&&&&&&&&&&&
98&&&&&&&&546+&&&&&444&&&&&&&&+95+5
假如表的数据量很大,但KKK列不可以有重复,,有重复的任意保留一条即可,请问各位这样的SQL语句怎样写呢?
搜索更多相关主题的帖子:
来 自:广东-广州
等 级:版主
威 望:66
帖 子:6039
--按某一字段分组取最大(小)值所在行的数据
(爱新觉罗.毓华 于浙江杭州)
数据如下:
name val memo
a&&& 2&&&a2(a的第二个值)
a&&& 1&&&a1--a的第一个值
a&&& 3&&&a3:a的第三个值
b&&& 1&&&b1--b的第一个值
b&&& 3&&&b3:b的第三个值
b&&& 2&&&b2b2b2b2
b&&& 4&&&b4b4
b&&& 5&&&b5b5b5b5b5
--创建表并插入数据:
create table tb(name varchar(10),val int,memo varchar(20))
insert into tb values('a',&&& 2,&&&'a2(a的第二个值)')
insert into tb values('a',&&& 1,&&&'a1--a的第一个值')
insert into tb values('a',&&& 3,&&&'a3:a的第三个值')
insert into tb values('b',&&& 1,&&&'b1--b的第一个值')
insert into tb values('b',&&& 3,&&&'b3:b的第三个值')
insert into tb values('b',&&& 2,&&&'b2b2b2b2')
insert into tb values('b',&&& 4,&&&'b4b4')
insert into tb values('b',&&& 5,&&&'b5b5b5b5b5')
--一、按name分组取val最大的值所在行的数据。
select a.* from tb a where val = (select max(val) from tb where name = a.name) order by a.name
select a.* from tb a where not exists(select 1 from tb where name = a.name and val & a.val)
select a.* from tb a,(select name,max(val) val from tb group by name) b where a.name = b.name and a.val = b.val order by a.name
select a.* from tb a inner join (select name , max(val) val from tb group by name) b on a.name = b.name and a.val = b.val order by a.name
select a.* from tb a where 1 & (select count(*) from tb where name = a.name and val & a.val ) order by a.name
name&&&&&& val&&&&&&&&&memo&&&&&&&&&&&&&&&&&
---------- ----------- --------------------
a&&&&&&&&& 3&&&&&&&&&&&a3:a的第三个值
b&&&&&&&&& 5&&&&&&&&&&&b5b5b5b5b5
--二、按name分组取val最小的值所在行的数据。
select a.* from tb a where val = (select min(val) from tb where name = a.name) order by a.name
select a.* from tb a where not exists(select 1 from tb where name = a.name and val & a.val)
select a.* from tb a,(select name,min(val) val from tb group by name) b where a.name = b.name and a.val = b.val order by a.name
select a.* from tb a inner join (select name , min(val) val from tb group by name) b on a.name = b.name and a.val = b.val order by a.name
select a.* from tb a where 1 & (select count(*) from tb where name = a.name and val & a.val) order by a.name
name&&&&&& val&&&&&&&&&memo&&&&&&&&&&&&&&&&&
---------- ----------- --------------------
a&&&&&&&&& 1&&&&&&&&&&&a1--a的第一个值
b&&&&&&&&& 1&&&&&&&&&&&b1--b的第一个值
--三、按name分组取第一次出现的行所在的数据。
select a.* from tb a where val = (select top 1 val from tb where name = a.name) order by a.name
name&&&&&& val&&&&&&&&&memo&&&&&&&&&&&&&&&&&
---------- ----------- --------------------
a&&&&&&&&& 2&&&&&&&&&&&a2(a的第二个值)
b&&&&&&&&& 1&&&&&&&&&&&b1--b的第一个值
--四、按name分组随机取一条数据。
select a.* from tb a where val = (select top 1 val from tb where name = a.name order by newid()) order by a.name
name&&&&&& val&&&&&&&&&memo&&&&&&&&&&&&&&&&&
---------- ----------- --------------------
a&&&&&&&&& 1&&&&&&&&&&&a1--a的第一个值
b&&&&&&&&& 5&&&&&&&&&&&b5b5b5b5b5
--五、按name分组取最小的两个(N个)val
select a.* from tb a where 2 & (select count(*) from tb where name = a.name and val & a.val ) order by a.name,a.val
select a.* from tb a where val in (select top 2 val from tb where name=a.name order by val) order by a.name,a.val
select a.* from tb a where exists (select count(*) from tb where name = a.name and val & a.val having Count(*) & 2) order by a.name
name&&&&&& val&&&&&&&&&memo&&&&&&&&&&&&&&&&&
---------- ----------- --------------------
a&&&&&&&&& 1&&&&&&&&&&&a1--a的第一个值
a&&&&&&&&& 2&&&&&&&&&&&a2(a的第二个值)
b&&&&&&&&& 1&&&&&&&&&&&b1--b的第一个值
b&&&&&&&&& 2&&&&&&&&&&&b2b2b2b2
--六、按name分组取最大的两个(N个)val
select a.* from tb a where 2 & (select count(*) from tb where name = a.name and val & a.val ) order by a.name,a.val
select a.* from tb a where val in (select top 2 val from tb where name=a.name order by val desc) order by a.name,a.val
select a.* from tb a where exists (select count(*) from tb where name = a.name and val & a.val having Count(*) & 2) order by a.name
name&&&&&& val&&&&&&&&&memo&&&&&&&&&&&&&&&&&
---------- ----------- --------------------
a&&&&&&&&& 2&&&&&&&&&&&a2(a的第二个值)
a&&&&&&&&& 3&&&&&&&&&&&a3:a的第三个值
b&&&&&&&&& 4&&&&&&&&&&&b4b4
b&&&&&&&&& 5&&&&&&&&&&&b5b5b5b5b5
--七,如果整行数据有重复,所有的列都相同。
数据如下:
name val memo
a&&& 2&&&a2(a的第二个值)
a&&& 1&&&a1--a的第一个值
a&&& 1&&&a1--a的第一个值
a&&& 3&&&a3:a的第三个值
a&&& 3&&&a3:a的第三个值
b&&& 1&&&b1--b的第一个值
b&&& 3&&&b3:b的第三个值
b&&& 2&&&b2b2b2b2
b&&& 4&&&b4b4
b&&& 5&&&b5b5b5b5b5
--在sql server 2000中只能用一个临时表来解决,生成一个自增列,先对val取最大或最小,然后再通过自增列来取数据。
--创建表并插入数据:
create table tb(name varchar(10),val int,memo varchar(20))
insert into tb values('a',&&& 2,&&&'a2(a的第二个值)')
insert into tb values('a',&&& 1,&&&'a1--a的第一个值')
insert into tb values('a',&&& 1,&&&'a1--a的第一个值')
insert into tb values('a',&&& 3,&&&'a3:a的第三个值')
insert into tb values('a',&&& 3,&&&'a3:a的第三个值')
insert into tb values('b',&&& 1,&&&'b1--b的第一个值')
insert into tb values('b',&&& 3,&&&'b3:b的第三个值')
insert into tb values('b',&&& 2,&&&'b2b2b2b2')
insert into tb values('b',&&& 4,&&&'b4b4')
insert into tb values('b',&&& 5,&&&'b5b5b5b5b5')
select * , px = identity(int,1,1) into tmp from tb
select m.name,m.val,m.memo from
&&select t.* from tmp t where val = (select min(val) from tmp where name = t.name)
) m where px = (select min(px) from
&&select t.* from tmp t where val = (select min(val) from tmp where name = t.name)
) n where n.name = m.name)
drop table tb,tmp
name&&&&&& val&&&&&&&&&memo
---------- ----------- --------------------
a&&&&&&&&& 1&&&&&&&&&&&a1--a的第一个值
b&&&&&&&&& 1&&&&&&&&&&&b1--b的第一个值
(2 行受影响)
--在sql server 2005中可以使用row_number函数,不需要使用临时表。
--创建表并插入数据:
create table tb(name varchar(10),val int,memo varchar(20))
insert into tb values('a',&&& 2,&&&'a2(a的第二个值)')
insert into tb values('a',&&& 1,&&&'a1--a的第一个值')
insert into tb values('a',&&& 1,&&&'a1--a的第一个值')
insert into tb values('a',&&& 3,&&&'a3:a的第三个值')
insert into tb values('a',&&& 3,&&&'a3:a的第三个值')
insert into tb values('b',&&& 1,&&&'b1--b的第一个值')
insert into tb values('b',&&& 3,&&&'b3:b的第三个值')
insert into tb values('b',&&& 2,&&&'b2b2b2b2')
insert into tb values('b',&&& 4,&&&'b4b4')
insert into tb values('b',&&& 5,&&&'b5b5b5b5b5')
select m.name,m.val,m.memo from
&&select * , px = row_number() over(order by name , val) from tb
) m where px = (select min(px) from
&&select * , px = row_number() over(order by name , val) from tb
) n where n.name = m.name)
drop table tb
name&&&&&& val&&&&&&&&&memo
---------- ----------- --------------------
a&&&&&&&&& 1&&&&&&&&&&&a1--a的第一个值
b&&&&&&&&& 1&&&&&&&&&&&b1--b的第一个值
(2 行受影响)
等 级:ID已被封
帖 子:50
不懂,,,,怎么看起来很复杂的,,?
等 级:新手上路
帖 子:16
select distinct(kkk) from A
Distinct 返回一个集合,并从指定集合中删除重复的元组。从尾部删除重复的元组。
等 级:论坛游民
帖 子:254
专家分:10
2楼的用的是什么方法呀??&&看的不明白~~&&&4楼 我就觉得方法蛮好的 ,以前老师也是这么说的.
来 自:湖南邵阳
等 级:职业侠客
帖 子:292
专家分:371
认为2楼的方法很好了,用这个distinct关键字的话,假如我要得到这个值ID的,而已这个值是重复了,请问4楼的该怎么做啊??
等 级:ID已被封
帖 子:50
谢谢各位的回答!看起来2楼的可以,但是可惜的是我看不懂........
4楼的方法只不过是去掉某一列的重复数据,但是我的目的是去掉这一列的重复数据后,剩下来的数据要全部显示出来,也就是说整张表的所有值都要出来,这样的话不知道怎样做才可以实现?
等 级:新手上路
帖 子:38
连我也看不懂,郁闷
来 自:湖南邵阳
等 级:职业侠客
帖 子:292
专家分:371
举个例子,比如数据库中有如下数据&&&
&&a1&&&&&&&&&&&a2&&&&&&&&&&&a3&&&&&&&&&&&a4&&&&&&&&&&&a5&&&
&&1&&&&&&&&&&&& a&&&&&&&&&&&& aaa&&&&&&&&&a&&&&&&&&&&&& a&&&
&&2&&&&&&&&&&&& b&&&&&&&&&&&& bbb&&&&&&&&&b&&&&&&&&&&&& b&&&
&&3&&&&&&&&&&&& c&&&&&&&&&&&& aaa&&&&&&&&&c&&&&&&&&&&&& c&&&
&&4&&&&&&&&&&&& d&&&&&&&&&&&& bbb&&&&&&&&&d&&&&&&&&&&&& d&&&
&&5&&&&&&&&&&&& e&&&&&&&&&&&& eee&&&&&&&&&e&&&&&&&&&&&& e&&&
&&6&&&&&&&&&&&& f&&&&&&&&&&&& ddd&&&&&&&&&f&&&&&&&&&&&& f&&&
&&7&&&&&&&&&&&& g&&&&&&&&&&&& bbb&&&&&&&&&g&&&&&&&&&&&& g&&&
&&8&&&&&&&&&&&& h&&&&&&&&&&&& eee&&&&&&&&&h&&&&&&&&&&&& h&&&
&&9&&&&&&&&&&&& i&&&&&&&&&&&& eee&&&&&&&&&i&&&&&&&&&&&& i&&&
&&10&&&&&&&&&&&j&&&&&&&&&&&& aaa&&&&&&&&&j&&&&&&&&&&&& j&&&
&&如何用一条语句取得这样记录集,去掉a3中重复的字段,取a1是最小的,如下&&&
&&a1&&&&&&&&&&&a2&&&&&&&&&&&a3&&&&&&&&&&&a4&&&&&&&&&&&a5&&&
&&1&&&&&&&&&&&& a&&&&&&&&&&&& aaa&&&&&&&&&a&&&&&&&&&&&& a&&&
&&2&&&&&&&&&&&& b&&&&&&&&&&&& bbb&&&&&&&&&b&&&&&&&&&&&& b&&&
&&5&&&&&&&&&&&& e&&&&&&&&&&&& eee&&&&&&&&&e&&&&&&&&&&&& e&&&
&&6&&&&&&&&&&&& f&&&&&&&&&&&& ddd&&&&&&&&&f&&&&&&&&&&&& f
&&SELECT&&&*&&&FROM&&&aaa&&&WHERE&&&a1&&&IN(SELECT&&&MIN(a1)&&&FROM&&&aaa&&&GROUP&&&BY&&&a3)
来 自:安徽
等 级:新手上路
帖 子:287
用distinct关键字,可以消除同一列重复的数据
版权所有,并保留所有权利。
Powered by , Processed in 0.070425 second(s), 8 queries.
Copyright&, BCCN.NET, All Rights Reserved本帖子已过去太久远了,不再提供回复功能。

我要回帖

更多关于 电脑死机画面卡住不动 的文章

 

随机推荐