我有一个users
中包含重复值的表employee_id
柱子。我需要列出具有重复的employee_ids 的所有行及其姓名。我需要查看所有具有重复项的用户employee_id
这样我就可以消除哪些值是有效的冲突。
SELECT name,employee_id
FROM users;
name | employee_id
-----------------------
jason 12345
tom 34567
jane 12345
will 01020
bill 12345
我需要返回:
name | employee_id
-------------------------
jason 12345
jane 12345
bill 12345
我看到类似的问题,但我仍然无法获得我需要的正确语法。在下面的内容中,我只出现了一次。我需要所有重复的出现employee_id
像上面一样。
SELECT employee_id, MAX(name)
FROM users
GROUP BY employee_id
HAVING COUNT(employee_id) > 1;
你可以使用窗口化COUNT
:
SELECT sub.name, sub.employee_id
FROM (SELECT *, COUNT(*) OVER(PARTITION BY employee_id) AS c
FROM users) AS sub
WHERE c > 1;
LiveDemo http://rextester.com/FIEX19667
或简单IN
:
SELECT *
FROM users
WHERE employee_id IN (SELECT employee_id
FROM users
GROUP BY employee_id
HAVING COUNT(employee_id) > 1);
LiveDemo2 http://rextester.com/DWOGA76796
或相关子查询:
SELECT name, employee_id
FROM users u
,LATERAL (SELECT COUNT(*) FROM users u2 WHERE u.employee_id = u2.employee_id) AS s(c)
WHERE c > 1;
SqlFiddleDemo http://sqlfiddle.com/#!15/d77d7/1/0
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)