选择不同的列值

时间:2015-02-09 10:14:47

标签: sql postgresql

给定一个包含列id,选择器,名称的表:

  1 |  ONE | A
  2 |  TWO | A
  3 |  ONE | C
  4 |  ONE | C
  5 |  ONE | E
  6 |  ONE | E
  7 |  TWO | E
  8 |  TWO | H

我需要一个查询,它返回所有不同的名称值,其中有多个行,这些行包含至少两个不同的选择器值。 对于上面的例子,我希望A和E是结果。 H不是预期的,因为只有一行。 不期望C,因为所有行都具有相同的选择器。 我可以在选择器列上使用group by和having子句, 但后来我无法选择名称作为结果......

我的尝试

select selector 
from mytable 
group by selector 
having count(*) > 1 

2 个答案:

答案 0 :(得分:2)

使用Group byhaving子句。

而不是*中的count汇总Distinct column_name汇总count来过滤具有多个不同值的群组< / p>

select column3 from yourtable 
group by column3 
having count(distinct column2)>1

答案 1 :(得分:0)

试试这个:

   select name
     from Table1
 group by name
   having count(distinct selector) > 1

您可以看到演示here