有一个数据集,假设是一对一映射。
例如,

userId, deviceId
aaa, 12345
bbb, 22398
ccc, 43284


但是,在某些情况下,一个deviceId具有许多userId。

userId, deviceId
ddd, 12094
eee, 12094
fff, 12094
ggg, 459834
hhh, 459834
iii, 459834
jjj, 459834


什么SQL只能列出那些一对多的条目?
想象一下,有很多一对多的条目。我不需要在结果中进行1对1的输入。因此,我希望看到的结果是

deviceId, _cnt
12094, 3
459834, 4

最佳答案

嗨,您可以COUNT个,然后过滤那些COUNT大于1的那些:

SELECT deviceId
       , COUNT(DISTINCT userId) AS uct
       , COUNT(userId) AS ct
  FROM table
 GROUP BY deviceId
HAVING ct > 1
   AND uct > 1

关于sql - 如何找出一对多输入,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/45499885/

10-11 03:40