如何选择2列组合相同的行

时间:2013-04-29 07:35:49

标签: sql postgresql

标题似乎在描述我的问题方面做得很差;让我试着用一个简单的例子来解释它:

假设我有下表:

_______________________
|id|variant_id|attr_id|
|__|__________|_______|
|1 |15        |110    |
|2 |15        |110    |
|3 |20        |152    |
|4 |20        |110    |
|5 |21        |110    |
|__|__________|_______|

现在,我想要的是一个查询,它会选择variant_idattr_id列组合出现多次的所有行。基本上在这个示例中,它应该选择第1行和第2行,因为它们在variant_idattr_id的组合在表中出现不止一次。

这可能吗?我试图想出一个可能的解决方案,这让我很痛苦。

2 个答案:

答案 0 :(得分:4)

SELECT variant_id, attr_id
FROM YouTable
GROUP BY variant_id, attr_id
HAVING COUNT(*) > 1

答案 1 :(得分:4)

尝试此查询

SELECT a.* FROM 
tbl a 
inner join 
tbl b
ON a.variant_id =b.variant_id AND a.attr_id = b.attr_id
WHERE a.id <> b.id;

希望这有帮助