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
我有一个 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