选择数据库中具有多个实例的用户


Select users with more than one instance in database

我有一个带有userID字段和itemID字段的表。我想选择所有那些有两个或两个以上itemID相同实例的用户(也就是说,例如,如果有3条记录的userID=1和itemID=7,那么我希望得到这些结果,但如果只有一个实例,就不希望了)。我需要获取所有用户(而不仅仅是某个用户ID的结果)。有人能建议我怎么做吗?谢谢

您可以使用聚合和having子句来完成此操作。如果你只想要用户:

select distinct userID
from t
group by userId, itemID
having count(*) >= 2;

这是一个有趣的查询,因为这是group byselect distinct一起使用的非常罕见的情况之一。如果您想要userId/itemId对,那么您可以使用select userId, itemId,而不使用distinct

您只需要使用groupby和have。hasing子句与where类似,只是它也适用于聚合。所以它有点像select userID, itemID, count(*) from mytable group by userID, itemID having count(*) > 1