如何编写SQL查询筛选无重复id的记录 无需删除数据
数据表查询需求说明
- 现有包含
id、product、price三个字段的数据表,当前存储的原始样例数据:
1 Banana 1$ 1 watermelon 1$ 1 Apple 1$ 2 Banana 1$ 3 Almond 1$ 3 peanut 1$ 4 Grapes 1$
- 功能约束:不对原表存储的任何数据做删除、修改操作,仅通过查询语句获取目标结果。
- 筛选目标:仅保留在表中出现总次数为1次的id对应的全部记录,最终期望输出的结果:
id product price 2 Banana 1$ 4 Grapes 1$
可落地实现SQL
核心逻辑是先通过分组统计定位符合次数要求的id范围,再关联原表取出对应行的完整字段,全程不会修改原表存储内容,语句如下:
-- 将your_table替换为实际使用的表名 SELECT original.id, original.product, original.price FROM your_table original INNER JOIN ( -- 子查询筛选出出现总次数仅为1次的id SELECT id FROM your_table GROUP BY id HAVING COUNT(id) = 1 ) single_id ON original.id = single_id.id;
替换表名后执行语句,返回结果就和预期的输出完全匹配,不会对原表数据产生任何影响。
内容的提问来源于stack exchange,提问作者Salman81
相关产品推荐
相关产品推荐

