请教下大神们,我这个SQL语句该怎么优化下

0
 select *

from a

where (ID_NO = '111')

or (ID_NO = '111')

order by (select count(b.name) from b where b.pk = a.pk) desc;
可以把select count(b.name) from b where b.pk = a.pk放在ORDER BY前面 
已邀请:
1

gogodiy - 天善智能数据库专家、Tableau爱好者 2015-10-26 回答

--MSSQL2008R2及以上版本:
;WITH AAA AS
(
SELECT pk,
COUNT(name) as total
FROM b
GROUP BY pk
)
SELECT *
FROM a INNER JOIN
AAA AS b ON a.pk=b.pk
WHERE a.ID_NO='111'
ORDER BY b.total DESC;
1

- 取是能力,舍是境界 2015-10-24 回答

 select a.id_no
from a
join b on a.pk = b.pk
where a.id_no = '111'
group by a.id_no
order by count(b.name) desc

要回复问题请先登录注册