让我们说我有两张桌子主人和奴隶。 主表包含master_name和master_id,从表包含Slave_id,slave_name和master_id。
样本数据。
master_id Master_name Master_status slave_id slave_name master_id status
1 x online 1 a 1 online
2 y online 2 b 1 online
3 z offline 3 c 2 offline
4 d 3 offline
5 e 3 online
我想要获得的预期结果是,
master_id no_of_slave
1 2
2 0
我希望得到每个在线大师都有的在线奴隶。
对于迟到的编辑感到抱歉。
答案 0 :(得分:5)
像这样使用LEFT JOIN
:
SELECT m.master_id
, count(s.slave_id) AS no_of_slave
FROM master m
LEFT JOIN slave s
ON m.master_id = s.master_id
GROUP BY m.master_id;
结果:
╔═══════════╦═════════════╗
║ MASTER_ID ║ NO_OF_SLAVE ║
╠═══════════╬═════════════╣
║ 1 ║ 2 ║
║ 2 ║ 1 ║
║ 3 ║ 2 ║
╚═══════════╩═════════════╝
答案 1 :(得分:1)
使用以下查询:
Select m.master_id, count(s.master_id) as no_of_slave
FROM master m
JOIN slave s
ON m.master_id = s.master_id
GROUP By m.master_id;
答案 2 :(得分:0)
select
a.master_id,
count(b.slave_id)
from
master a,
slave b
where
a.master_id=b.master_id
group by
a.master_id
答案 3 :(得分:0)
select master_id, count(1)
from Slave
group by master_id
order by master_id
只会给你有奴隶的主人,如果桌子很大,你甚至不需要加入主人
答案 4 :(得分:0)
你可以用它。这将有效。
select m.master_id,(select count(*) from slave s where s.master_id = m.master_id) as no_of_slave from master m
答案 5 :(得分:0)
SELECT master_id, count(*) AS no_of_slave
FROM slave
GROUP BY master_id
ORDER BY master_id;
答案 6 :(得分:0)
您对主名称不感兴趣,因此不需要加入,您在Slave表中拥有所有必要的信息:
select master_id, count(slave_id) as no_of_slave
from Slave
group by master_id
order by master_id --remove this line, if ordering of master ids is not important
;
如果给定的主ID不在此结果中,则表示它没有从属。