读书人

sql 有关问题 球解答

发布时间: 2012-10-21 09:00:07 作者: rapoo

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.numfrom  b inner join  (select sid,count(1) as num from a group by sid)aon  b.sid=a.sida,b的SID上都建立索引
[解决办法]
select
b.*,a.num
from
b
left join (select sid,count(1) as num from a group by sid)a
on
b.sid=a.sid

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

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

读书人网 >SQL Server

热点推荐