一句話從 MySQL 取出重複行

xiaohuihui發表於2020-06-28

按該欄位分組後,組內行數大於 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應用,可參考 。

具體使用方法可參考 。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69900830/viewspace-2700788/,如需轉載,請註明出處,否則將追究法律責任。

相關文章