Jas*_*son 14 sql postgresql select duplicates
我有一个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
Run Code Online (Sandbox Code Playgroud)
我需要回复:
name | employee_id
-------------------------
jason 12345
jane 12345
bill 12345
Run Code Online (Sandbox Code Playgroud)
我看到类似的问题,但我仍然无法得到我需要的正确语法.以下我只会发生一次.我需要employee_id像上面一样重复所有的出现.
SELECT employee_id, MAX(name)
FROM users
GROUP BY employee_id
HAVING COUNT(employee_id) > 1;
Run Code Online (Sandbox Code Playgroud)
Luk*_*zda 19
你可以使用窗口COUNT:
SELECT sub.name, sub.employee_id
FROM (SELECT *, COUNT(*) OVER(PARTITION BY employee_id) AS c
FROM users) AS sub
WHERE c > 1;
Run Code Online (Sandbox Code Playgroud)
或简单IN:
SELECT *
FROM users
WHERE employee_id IN (SELECT employee_id
FROM users
GROUP BY employee_id
HAVING COUNT(employee_id) > 1);
Run Code Online (Sandbox Code Playgroud)
或相关子查询:
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;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4983 次 |
| 最近记录: |