一句話從 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 腳本》

具體使用方法可參考 《如何使用集算器》

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章