SELECT a.id, IFNULL(b.num, 0) AS num FROM a 
LEFT JOIN (SELECT id, COUNT(*) AS num FROM b GROUP BY id) b on b.id=a.id

測試結果:

(sn int,name varchar(10),category varchar(20),amt int) declare @y table (sn int primary key,name varchar(10),category varchar(20),amt int) insert into @t values (1,'Liu','BCar',1),(1,'Chiu','forcement',3000),(4,'Liu','Enforcement',2500) insert into @y values (1,'Liu','ACar',1),(2,'Chiu','Enforcement',3000),(3,'Wang','Car',4000),(4,'Liu','Enforcement',2500) select b.sn,b.name ,count(a.sn) from @t a right join @y b on a.sn = b.sn group by a.sn,b.sn,b.name sn name _count
1 Liu 2
2 Chiu 0
3 Wang 0
4 Liu 1