oracle:一个表中有两个字段存在重复数据,比如:

name dw age ms
------- ----- ----- -----
zhang a 18 xx
wang b 23 xy
zhang a 24 mm
……
表中的name字段与dw字段存在重复。
想要的结果是:
把重复的数据显示在前面,但是不去除重复数据。如下:
name dw age ms
------- ---- ---- -----
zhang a 18 xx
zhang a 24 mm
……
wang b 23 xy
这样的结果,我试着把重复数据查出来到一个A表中,然后用源表左联接右表去查询,单数查出来的数据显示:重复的不在最前面显示。
请大家帮忙有什么办法能实现??
样的结果,我试着把重复数据查出来到一个A表中,然后用源表左联接A表去查询,但是查出来的数据显示:重复的不在最前面显示。
请大家帮忙有什么办法能实现??

第1个回答  2012-12-28
我觉得他的意思不是对dw字段排序,如果是排序就不用上来问了。dw字段的数据应该不是a,b,这种简单的数据。他是要把所有重复字段放在前面显示,比如两条a,两条c,一条b: a a c c .. b

我有两个问题,一是为什么必须要表连接?
二是可以先考虑用name或者dw做group by,分组之后根据具体数据特点进行order by,或者对count(分组)>1的进行排序。
第2个回答  2012-12-28
你可以用order by 对dw字段进行排序,这样查出来的结果就是你所要的!默认为降序,desc为降序,asc为升序!
sql:
select
*
from table_name
order by dw
第3个回答  2012-12-28
楼主按你的要求
select * from (
select t.*,1 order1 from test_order t, (
select dw ,name,count(dw) con from test_order t
group by dw,name
having count(dw) >=2 )a
where t.name = a.name and t.dw = a.dw
union
select t.*,2 order1 from test_order t, (
select dw ,name,count(dw) con from test_order t
group by dw,name
having count(dw) < 2 )a
where t.name = a.name and t.dw = a.dw
)a
order by a.order1本回答被提问者和网友采纳
相似回答