潮尚优品生活馆是连锁的吗?

15:58 提问
关于oracle sql查询同一个表,根据不同字段过滤去重的问题
j.xmbhid,j.xmmc,j.scjd,j.xmzt from jhxx_new j
j.xxdm='' and j.lrjh in (209,210,244)
order by xmbhid,scjd,xmzt
重复记录中所处阶段三个状态(0,2,3),项目状态(xmzt)两个状态(0,1)
先要查看所处阶段最大值,并且项目状态是1,即第二个图片的显示效果,求大神们帮忙啊
第一个截图的链接直接复制到浏览器地址栏,下同
b174.photo./psb?/0d0fe1ee-dc64-40eb-b1e0-18d4b4bf722a/OrQ665j4y6EX33lqUrUy3.qkT4vkj5iq8k8B0HUZ1ck!
/b/dJ5juWdtIQAA&bo=fgGpAAAAAAAFAPU!&rf=viewer_4
/psb?/0d0fe1ee-dc64-40eb-b1e0-18d4b4bf722a/*YPV2iqIEq9fPz.lABJpCO6hA1bU8AP00zPC4DW56JQ!
/b/dEAe7GiJAgAA&bo=fgGpAAAAAAAFAPU!&t=5&rf=viewer_4欢迎加入我们,一同切磋技术。 &
用户名: &&&
密 码: &
共有 13639 人关注过本帖
标题:在一张表中怎样去掉某个字段得重复的数据?
等 级: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.063677 second(s), 8 queries.
Copyright&, BCCN.NET, All Rights Reserved新手园地& & & 硬件问题Linux系统管理Linux网络问题Linux环境编程Linux桌面系统国产LinuxBSD& & & BSD文档中心AIX& & & 新手入门& & & AIX文档中心& & & 资源下载& & & Power高级应用& & & IBM存储AS400Solaris& & & Solaris文档中心HP-UX& & & HP文档中心SCO UNIX& & & SCO文档中心互操作专区IRIXTru64 UNIXMac OS X门户网站运维集群和高可用服务器应用监控和防护虚拟化技术架构设计行业应用和管理服务器及硬件技术& & & 服务器资源下载云计算& & & 云计算文档中心& & & 云计算业界& & & 云计算资源下载存储备份& & & 存储文档中心& & & 存储业界& & & 存储资源下载& & & Symantec技术交流区安全技术网络技术& & & 网络技术文档中心C/C++& & & GUI编程& & & Functional编程内核源码& & & 内核问题移动开发& & & 移动开发技术资料ShellPerlJava& & & Java文档中心PHP& & & php文档中心Python& & & Python文档中心RubyCPU与编译器嵌入式开发驱动开发Web开发VoIP开发技术MySQL& & & MySQL文档中心SybaseOraclePostgreSQLDB2Informix数据仓库与数据挖掘NoSQL技术IT业界新闻与评论IT职业生涯& & & 猎头招聘IT图书与评论& & & CU技术图书大系& & & Linux书友会二手交易下载共享Linux文档专区IT培训与认证& & & 培训交流& & & 认证培训清茶斋投资理财运动地带快乐数码摄影& & & 摄影器材& & & 摄影比赛专区IT爱车族旅游天下站务交流版主会议室博客SNS站务交流区CU活动专区& & & Power活动专区& & & 拍卖交流区频道交流区
白手起家, 积分 16, 距离下一级还需 184 积分
论坛徽章:0
& && &如何用SQL语句将表中两个字段相同的记录取出,
&&nbsp|&&nbsp&&nbsp|&&nbsp&&nbsp|&&nbsp&&nbsp|&&nbsp
丰衣足食, 积分 711, 距离下一级还需 289 积分
论坛徽章:0
select * from tableName where 字段1 = 字段2;
白手起家, 积分 16, 距离下一级还需 184 积分
论坛徽章:0
谢谢,但是.......
谢谢回复,但我的意思是:
比如:select distinct(字段1) from 表名
select distinct(字段1,字段2) from 表名
不行,请教这种情况下SQL语句的写法,
丰衣足食, 积分 711, 距离下一级还需 289 积分
论坛徽章:0
select distinct 字段1,字段2 from 表名 ;
select 字段1,字段2 from 表名 group by 字段1,字段2;
白手起家, 积分 125, 距离下一级还需 75 积分
论坛徽章:0
因为两个字段可能位于不同记录,上述方法似乎
是有问题的,
可以通过子查询和表的自连接来实现。
白手起家, 积分 125, 距离下一级还需 75 积分
论坛徽章:0
select 如下:
select table.field1, table.field2 from table where table.field1 in (select table.field2 from table)
北京皓辰网域网络信息技术有限公司. 版权所有 京ICP证:060528号 北京市公安局海淀分局网监中心备案编号:
广播电视节目制作经营许可证(京) 字第1234号
中国互联网协会会员&&联系我们:
感谢所有关心和支持过ChinaUnix的朋友们
转载本站内容请注明原作者名及出处

我要回帖

更多关于 广州潮尚优品 的文章

 

随机推荐