日期:2014-05-17  浏览次数:20361 次

sql 问题, 球解答
a表:

  a

id sid name

1 2 hello

2 2 hello2

 

b表:

  b

sid bid name

2 2 额

3 2 哈哈


如上:

我想 查询 b 表所有字段, 但是要 根据 b表的sid 统计 a 表 

已经有一条 select bb.*,(select count(1) from a as aa where aa.sid = bb.sid) from b as bb 
不过貌似效率不高。。

球高手~~~~优化,优化, 指点迷津~


------解决方案--------------------
SQL code
select
  b.*,a.num
from
  b 
inner join 
 (select sid,count(1) as num from a group by sid)a
on
  b.sid=a.sid

a,b的SID上都建立索引

------解决方案--------------------
select
b.*,a.num
from

left join (select sid,count(1) as num from a group by sid)a
on
b.sid=a.sid

这要看你的数据分布.
两表SID有索引么?

有索引.子查询不一定慢.