SQL,按一列和一个不同的列分组

时间:2019-02-11 14:19:16

标签: mysql sql group-by distinct

我有一个具有以下结构的表

id  phone_number  message    schedule_id
1 | 1212121212  | aaaaa |    12
2 | 2323232323  | bbbbb |    12
3 | 1212121212  | ccccc |    12
4 | 1212121212  | ddddd |    13

我想获取具有相同phone_number和不同schedule_id的行 我使用以下查询来获取具有相同电话号码的行

select * from message group by to_number having count(*)>1;

但是它也将具有不同schedule_id的行分组

有人可以帮我写查询吗?

3 个答案:

答案 0 :(得分:1)

您可以使用EXISTS

select m.*
from message m
where exists (select 1 from message m1 where m1.to_number = m.to_number and m1.id <> m.id);

您也可以使用GROUP BY,也只需包括该列:

select to_number, schedule_id 
from message 
group by to_number, schedule_id 
having count(*) > 1;

答案 1 :(得分:1)

您应该对带subqselect的连接使用联接,其计数组由phone_number

  select m.* 
  from  message m
  inner join (
        select phone_number
        from message 
        group by phone_number
        having count(*)>1;

  ) t on t.phone_number  = m.phone_number

答案 2 :(得分:0)

这是您所期望的吗?

select distinct phone_number, schedule_id from message;