Cab*_*ero 2 sql postgresql duplicates
假设我有一张桌子
CREATE TABLE names (
id SERIAL PRIMARY KEY,
name CHARACTER VARYING
);
Run Code Online (Sandbox Code Playgroud)
有数据
id name
-------------
1 John
2 John
3 John
4 Jane
5 Jane
6 Jane
Run Code Online (Sandbox Code Playgroud)
我需要选择name除原始行之外的所有重复行。所以在这种情况下我需要的结果是这样的:
id name
-------------
2 John
3 John
5 Jane
6 Jane
Run Code Online (Sandbox Code Playgroud)
我如何在 Postgresql 中做到这一点?
您可以用来ROW_NUMBER()识别“原始”记录并将其过滤掉。这是使用cte 的方法:
with Nums AS (SELECT id,
name,
ROW_NUMBER() over (PARTITION BY name ORDER BY ID ASC) RN
FROM names)
SELECT *
FROM Nums
WHERE RN <> 1 --Filter out rows numbered 1, 'originals'
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
687 次 |
| 最近记录: |