Select语句返回重复数据

时间:2016-02-16 14:47:56

标签: sql oracle

我正在运行一个简单的选择页面,它返回了很多重复的记录,我需要回到我的一行,我曾尝试使用一个组,但它给了我一个错误,我需要知道是否还有其他方法可以解决这个问题。

查询是:

select a.co_id,
       a.customer_id,
       sysadm.func_cap_co_id(co_id, 'RCAT', NULL) RC,
       rowid
from mdsrrtab a 
where a.co_id in ('123456');

结果是:

1. 123456 163972378 20
2. 123456 163972378 20

正如你所看到的那样,它向我提供了重复的信息。

当我使用它的组时,它给了我一个ORA-00979,我用谷歌搜索它但仍然无法得到解决方案。

修改

我能够通过删除rowid删除重复的行,thx到@L.Llama,让我看看rowid。

查询如下:

  select a.co_id,
     a.customer_id,
     sysadm.func_cap_co_id(co_id, 'RCAT', NULL) RC
     from mdsrrtab a 
     where a.co_id in ('123456')
     group by a.co_id, a.customer_id;

结果

  • 1 158634373 163972378 20

亲切的问候。

1 个答案:

答案 0 :(得分:1)

您可以使用DISTINCT或GROUP BY

DISTINCT解决方案:

select distinct a.co_id,
       a.customer_id,
       sysadm.func_cap_co_id(co_id, 'RCAT', NULL) as RC
 from mdsrrtab a 
 where a.co_id in ('123456');

GROUP BY解决方案:

select a.co_id,
       a.customer_id,
       sysadm.func_cap_co_id(co_id, 'RCAT', NULL) as RC
 from mdsrrtab a 
 where a.co_id in ('123456')
 group by a.co_id,a.customer_id,sysadm.func_cap_co_id(co_id,'RCAT',null);