如何查找具有多个字段的重复元素

时间:2017-09-06 06:46:32

标签: sql oracle

我有一个场景,其中一个表包含2列。 产品和子类似

  search(event) {
        let uniqueArray = [];
        this.autocompletedata.filter((entry) => {
            console.log('entryyyy', entry);
                this.results = entry['items'].filter(a => this.showFilter == 1 ? a['item'].startsWith(event.query) :  
                   this.showFilter == 2 ? a['service'].startsWith(event.query) : 
                   this.showFilter == 3 ? a['phoneNum'].startsWith(event.query) : false );
                   const curr: string[] = this.results.map(data => data.item ? data.item : 
                    data.service ? data.service : data.phoneNum ? data.phoneNum : false );
                    this.results = curr.filter((x, i, a) => x && a.indexOf(x) === i);
        });

       console.log(this.results);

    }

我想找到大于1. 产品的col sub 的元素超过1.But diff产品不一样。

所以我的结果将是 sub1 sub3 预期结果将是截然不同的:

Sno    Product  Sub
1      pr1      sub1 
2      pr1      sub1 
3      pr2      sub1 
4      pr2      sub1 
5      pr3      sub2
6      pr4      sub3
7      pr5      sub3
8      pr6      sub4
9      pr6      sub4

我尝试在产品上使用group by,并尝试使用以下内容:

    Sub
 1  sub1
 2  sub3

但这对于给定的方案不正确。 需要你的建议。

4 个答案:

答案 0 :(得分:2)

sub and use HAVING`聚合只能获得包含多种产品的广告:

select sub
from table1
group by sub
having min(product) <> max(product);

select sub
from table1
group by sub
having count(distinct product) > 1;

答案 1 :(得分:1)

根据相关提供的示例数据,您似乎正在查找具有多个Sub的列product中的所有不同行。您可以使用以下查询来实现此目的。

select a.sub from (
select distinct sub, product from table1
    ) a
group by a.sub  
having count(*) > 1

<强>结果:

    SUB
--------    
1   sub1
2   sub3

您可以查看演示 here

答案 2 :(得分:0)

这是怎么回事?

SELECT sub FROM table1 
GROUP BY sub
HAVING COUNT(sub) > 1

答案 3 :(得分:0)

SELECT t1.product,t1.sub,t1.Count 
FROM
  (SELECT product,sub,DENSE_RANK() OVER (Partition By product ORDER BY Sub) Count 
   FROM table1
   ) t1
WHERE t1.Count=2 
-- = 2 Means product Repeated more than 1