注册 登录
编程论坛 SQL Server论坛

很吐血.关于Top的问题.兄弟们帮个忙.在线急等.

sunfishy 发布于 2008-07-27 16:03, 1276 次点击
请教一个问题:

数据库列表如下
id     bname        bauthor     
1       11          x
2       22          x
3       33          y
4       44          y
5       55          y
6       66          z
7       77          z
8       88          c
9       99          c

当搜索书数量排在前两位的作者的时候...
select top 2 bauthor from book group by bauthor
order by count(bname) desc
输出:y c z x

而我只是想输出两个作者而已...top把相同的值当作一个值为输出了...

请问有什么好的方法可以解决相同值的问题.谢谢大伙了...
6 回复
#2
myemail19832008-07-27 16:24
没做过这个呢
今天没在家,要不给你试下了,我做过TOP 1,根据时间排序的,这个没做过
我也想知道为什么
#3
zhouxinjian2008-07-27 17:24
回复 1# sunfishy 的帖子
没有啊,输出的是y,x啊
#4
sunfishy2008-07-28 10:29
[quote][bo][un]madpbpl[/un] 在 2008-7-28 00:22 的发言:[/bo]

循环时写成
i=1
do while not rs.eof and i<= (top后面的那个值)
.............     '你的循环
i=1+1
rs.movenext
loop

感谢大伙的帮忙。。
#5
ming2062008-07-28 13:09
怎么可能还用ASP来循环嘛?这样的做法不是很影响性能了?
本程序虽然非常之小,但是对于上10万的记录,你想想.......
直接如下写法即可:

SELECT Top 2 bauthor AS '作者', count( * ) AS '书数量'
FROM t
GROUP BY bauthor
ORDER BY '书数量' DESC
#6
myemail19832008-07-28 22:49
select top 2 bauthor from book
group by bauthor
order by count(bname) desc
这个地方的bname换成是bauthor   是不是应该可以,我今天在公司试了一个类似的
#7
bb38522008-08-05 11:03
select top 2 bauthor from
(select distinct bauthor,
(select count(bname) from book where bauthor=b.bauthor) c
from book b
)bb
order by c desc

楼住那个输出结果也是两个作者阿,好像没什么问题嘛

[[it] 本帖最后由 bb3852 于 2008-8-5 11:21 编辑 [/it]]
1