思路:
1.表A UNION 表B,的出来的结果会把相同的ID,NAME过滤掉,如图,重复的23,a1已经过滤只剩一个。
2.用group by id,得出一个ID有多少条记录,就是该id对应的name的数量
代码如下:
SELECT ID,COUNT(*) num FROM
(
SELECT * FROM 表A
UNION
SELECT * FROM 表B
) tb
GROUP BY tb.ID
结果如图:
select id,count(distinct name)
from
select name,id from A
union all
select name,id from B
)
group by id
create table A(id int,
name varchar(10))
insert into A (id,name) values ('23','a1')
insert into A (id,name) values ('23','b1')
insert into A (id,name) values ('24','c1')
create table B(id int ,
name varchar(10))
insert into A (id,name) values ('23','a1')
insert into A (id,name) values ('23','d1')
insert into A (id,name) values ('25','e1')
select id,count(distinct name) as 个
from
(
select name,id from A
union all
select name,id from B) as c
group by id