sql查詢表內重複數據

MySQL 跟ORACLE持多字段的IN 和 NOT IN

SELECT * FROM 表名 a
WHERE (a.重複字段1,a.重複字段2,a.重複字段3) IN  (SELECT 重複字段1,重複字段2,重複字段3 FROM 表名 GROUP BY 重複字段1,重複字段2,重複字段3 HAVING COUNT(*) > 1)

但SQL SERVER 不支持多字段的IN 和 NOT IN,幸好有可替代方案

--單字段查表內重複值
select * from a  where 重複字段 in(select 重複字段 from a group by 重複字段 having COUNT(*)>1 )
order by 重複字段 DESC
--多字段查表內重複值
select * from  a where exists(
    select 1 from (select 重複字段1,重複字段2 from a group by 重複字段1,重複字段2 having             
    COUNT(*)>1)b where a.重複字段1 = b.重複字段1 and b.重複字段2 = a.重複字段2);

 

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