一个排序的问题,各位老大帮个忙?
比如现在是这样的情况
A表
序号 类名 总数(这个是动态的,表中不存在此项
1 A 【15 】
2 B 【12 】
3 C 【18 】
4 D 【9 】
B表
序号 名称 分类ID
1 a 1
2 c 3
3 a 1
4 d 4
............
x ax 2
可以算出B表每个分类的个数,比如A 15条,B
12条,C 18条,D 9条
说明,所含的记录数(这个是动态的)这个是另一个表中此类的记录数,这个是动态变化的。
现在我要根据B表每个分类所含记录条数的倒序来排列,排列后的结果为
A表
序号 类名 所含的记录数(这个是动态的,表中不存在此项)
3 C 【18 】
1 A 【15 】
2 B 【12 】
4 D 【9 】
各位能看明白吧,这个怎么写SQL语句啊,不要存储过程,谢谢各位!
[解决办法]
select 序号,类名from aorder by (select count(1) from b where a.序号=b.分类ID) desc
[解决办法]
试试这个,刚刚测试成功了的
SELECT 序号 ,COUNT(名称)AS num FROM A表 WHERE 序号 IN
(
SELECT 序号 FROM B表
)
GROUP BY A表.序号
ORDER BY num DESC
[解决办法]
SELECT 序号 ,类名,COUNT(名称)AS num FROM A表
left join B表 on A表.类名 = B表.类名
GROUP BY A表.类名
ORDER BY num DESC
[解决办法]
下面是我亲自试验的,不知是不是你想要的结果
create table t_B (
i_id int identity(1,1),
c_name char(10),
i_type int
)
insert t_B values('a',1)
insert t_B values('c',c)
insert t_B values('a',1)
insert t_B values('d',4)
select * from t_B
i_id c_name i_type
1a1
2c3
3a1
4d4
select i_type, c_name,count(1) as num from t_B group by i_type,c_name order by num desc
序号 类别 数量
1a2
3c1
4d1