一句话从 MySQL 取出重复行

 

关键词导读:MySQL 重复行 分组

按该字段分组后,组内行数大于 1 的就是重复行。大于 1 要写入 having;但仅用 group+having 只能得到汇总值,不是明细数据,要得到明细还要用子查询重复遍历:
select *
from A
where g in
       (select  g
       from A
       group by g
       having count(*)>1)

SQL 没有显式的集合数据类型,不能保持住分组后的子集,进而无法针对子集进行后续的多步骤运算,不得不用冗长的子查询。

这类集合运算如果用集算器 SPL 就方便地多,只要一句:
=connect(”mysqlDB”).query(“select * from A”).group(g).select(~.len()>1).conj()

有了显式集合后,就可以对分组子集做更复杂的后续计算,包括枚举分组、重叠分组等,参考分组?原来你是玩儿真的!

当数据不在数据库里时,SPL 执行复杂计算仍然方便:
=file(“d:/t.csv”).import(;,",").group...

SPL能很方便地嵌入到JAVA应用,可参考《Java 如何调用 SPL 脚本》

具体使用方法可参考 《如何使用集算器》