当前位置: 代码迷 >> Oracle开发 >> 跪求一条查询重复记录的sql语句,该怎么解决
  详细解决方案

跪求一条查询重复记录的sql语句,该怎么解决

热度:50   发布时间:2016-04-24 07:28:14.0
跪求一条查询重复记录的sql语句
场景如下:第一要根据email分组,然后查询出他的status在1,2,3,4中的记录个数大于等于2的记录。(1,2,3,4为有效)
t_user  
  id email status
  1 aa@gmail.com 1
  2 aa@gmail.com 2
  3 aa@gmail.com 3
  4 yy@gmail.com 1
  5 yy@gmail.com 2
  6 zz@gmail.com 2
  7 zz@gmail.com 3
  8 zz@gmail.com 5
  9 xx@gmail.com 5
 10 xy@gmail.com 1
 11 qx@gmail.com 1
 12 qx@gmail.com 4
  如何写一个sql语句将t_user变成如下  
  id email status
  1 aa@gmail.com 1
  2 aa@gmail.com 2
  3 aa@gmail.com 3
  4 yy@gmail.com 1
  5 yy@gmail.com 2
  6 zz@gmail.com 2
  7 zz@gmail.com 3
  11 qx@gmail.com 1
 12 qx@gmail.com 4

------解决方案--------------------
SQL code
with t as ( select  1 id ,'aa@gmail.com' email, 1 status from dual union all select  2 ,'aa@gmail.com', 2 from dual union all select  3 ,'aa@gmail.com', 3 from dual union all select  4 ,'yy@gmail.com', 1 from dual union all select  5 ,'yy@gmail.com', 2 from dual union all select  6 ,'zz@gmail.com', 2 from dual union all select  7 ,'zz@gmail.com', 3 from dual union all select  8 ,'zz@gmail.com', 5 from dual union all select  9 ,'xx@gmail.com', 5 from dual union all select 10 ,'xy@gmail.com', 1 from dual union all select 11 ,'qx@gmail.com', 1 from dual union all select 12 ,'qx@gmail.com', 4 from dual)select  * from t where email  in (select email from t where status<=4 group by email having count(*)>=2 ) and status<=4order by id