2017-07-03 44 views
0

假设这是一个查询显示所有结果与更多然后1项

id   value 
------  --------- 
    10    123 
    10    422 
    11    441 
    11    986 
    12    674 
    13    648 

什么我需要添加到该查询返回所有的ID具有与它们相关的2个或多个值的结果。所以,在这种情况下,它只会返回ID 10 & 11,但我需要记录。

这样的结果是这样的:

id   value 
------  --------- 
    10    123 
    10    422 
    11    441 
    11    986 

GROUP BY不会帮我,因为我只拿到了1回.. ;-)

谢谢。

回答

0

您可以使用exists

select t.* 
from t 
where exists (select 1 from t t2 where t2.id = t.id and t2.value <> t.value); 
1

这里有一个简单的方法来做到这一点

select * from table where id in (select id from table group by id having count(id)>1) order by id; 
+0

应该是'IN' ... –

+0

@Prdp谢谢你,我忘了, “=”当子查询返回多行时会导致错误。同样修正它。 –

+0

由于某种原因'count(id)> = 2'不适合我的眼睛。我将它写为'Count(id)> 1';) –

相关问题