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

SQL, Group by one column with one distinct column

我有一个 table 具有以下结构

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 的行 我使用以下查询来获取具有相同 phone number

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

但它对具有不同 schedule_id 的行进行分组

有人可以帮我写查询吗?

您可以使用 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;

这是您期待的吗?

select distinct phone_number, schedule_id from message;

您应该为子选择使用联接,计数分组依据 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