SQL分组筛选技术问询:查询Col1中重复次数>1的分组数据
获取Col1重复次数大于1的分组记录
先明确你的数据表结构和数据:
| Col1 | Col2 |
|---|---|
| Auto | alt |
| Auto | alt |
| Auto | neu |
| Haus | alt |
| Haus | alt |
| Stuhl | neu |
你想要获取Col1中重复次数大于1的分组对应的所有记录,这个思路没问题,但你写的SQL里有几个拼写和语法小错误,我帮你修正并优化一下:
修正后的基础写法
SELECT table1.Col1, table1.Col2 FROM table1 WHERE table1.Col1 IN ( SELECT Col1 FROM table1 AS Tmp GROUP BY Col1 HAVING COUNT(Col1) > 1 ) ORDER BY table1.Col1;
更高效的JOIN写法(适合大数据表)
如果你的表数据量较大,用JOIN替代IN通常会有更好的性能表现:
SELECT t1.Col1, t1.Col2 FROM table1 t1 JOIN ( SELECT Col1 FROM table1 GROUP BY Col1 HAVING COUNT(*) > 1 ) t2 ON t1.Col1 = t2.Col1 ORDER BY t1.Col1;
这两种写法都会返回你需要的结果:所有Col1为Auto和Haus的记录——这两个值在Col1中的出现次数都大于1。
内容的提问来源于stack exchange,提问作者otto.kranz
相关产品推荐
相关产品推荐

