如何在其他列中获取具有相同ID但不同值的所有行?

时间:2015-06-28 08:47:31

标签: sql postgresql

我在PostgreSQL中编写查询时遇到了麻烦。 我有一个包含IDssubID的视图。 例如:

ID  quantity partID 
100   50       10
100   20       10
100   30       11
101   50       13
101   70       13
102   20       17

我希望获得具有相同ID但不同partIDs的所有行。 对于给定的例子,我想得到:

ID  quantity partID 
100   50       10
100   20       10
100   30       11

我尝试了这个查询查询:

select id  ,quantity ,partid 
from A
group by id,quantity,partid
having count(id)>2
order by id

但它不起作用。如果ID出现在2行以上,则会进行准确检查......在给定的示例中,它也需要ID 101。我也不知道如何让它只选择partidID每个 if(tempStr.equals("Sou")){ } 不同。

2 个答案:

答案 0 :(得分:2)

每个count群组中distinct partid id只能{/ 1>}:

select * 
from A t 
where exists (
  select 1
  from A
  where id = t.id
  having count(distinct partid) > 1)

SQLFiddle

答案 1 :(得分:2)

你不需要数数;您只需要检查是否存在具有不同partid的行:

SELECT * 
FROM atable t 
WHERE EXISTS (
  SELECT *
  FROM atable x
  WHERE x.id = t.id
  AND x.partid <> t.partid
  );