“结果集重复记录怎么去掉”要分场景来说,下面按常见情况给你总结:
SELECT DISTINCT *
FROM 表名;
SELECT DISTINCT 字段1, 字段2
FROM 表名;
SELECT *
FROM (
SELECT *,
ROW_NUMBER() OVER (
PARTITION BY 去重字段
ORDER BY 时间字段 DESC
) rn
FROM 表名
) t
WHERE rn = 1;
✅ 适用于:MySQL 8+、SQL Server、Oracle、PostgreSQL
List<Record> result = list.stream()
.collect(Collectors.toMap(
Record::getId,
r -> r,
(a, b) -> a
))
.values()
.stream()
.toList();
seen = set()
result = []
for item in data:
if item['id'] not in seen:
seen.add(item['id'])
result.append(item)
❌ DISTINCT 只能整行或指定列去重
❌ GROUP BY 不等于“去重保留原行”
✅ 去重前一定要明确:按什么字段算重复?保留哪一条?
如果你能告诉我:
我可以直接帮你写可用 SQL。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。