请教我有两个两个数据表a表aid(主键,自动) bid
1 2
2 3
3 1
4 2
5 1
6 4
7 1
8 4
9 2
...
b表bid(主键,自动) bname
1 我
2 小麦
3 小刘
4 小王
我想读出,在a表中 bid出现次数最多的前 3 名的bname和它对应的bid,并列出他们的出现次数,并按出现次数多少,降序排列,相同次数的,按aid升序排列
如按上面就出现的是我(3次) -- 1小麦(3次) -- 2小王(2次) -- 4请问这个SQL语句该怎么写呢?
1 2
2 3
3 1
4 2
5 1
6 4
7 1
8 4
9 2
...
b表bid(主键,自动) bname
1 我
2 小麦
3 小刘
4 小王
我想读出,在a表中 bid出现次数最多的前 3 名的bname和它对应的bid,并列出他们的出现次数,并按出现次数多少,降序排列,相同次数的,按aid升序排列
如按上面就出现的是我(3次) -- 1小麦(3次) -- 2小王(2次) -- 4请问这个SQL语句该怎么写呢?
解决方案 »
- 表连接问题!急救
- text型的一定要用UPDATETEXT,WRITETEXT,READTEXT 吗??
- 救命啊~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~有识之士来看看呀.
- Cannot resolve collation conflict for equal to operation.
- 求一个查询语句
- 请问有没有数据库转换的工具,比如DB2转Oricle,SQL Server转Oricle等,给分!
- 关于模糊查询的问题
- 有人研究过SQL查询出现错误的情况吗?
- 关于Sql Server7.0的字符集的问题?
- SQLServer7 中Table的关系和Table的建立
- 求教高手:树结构的排序处理
- [!charlist]用法问题
select a.bname, isnull(b.total,0) from b表 a left outer join
(select bid,count(*) as total from a表 group by bid) b on a.bid=b.bid抢分
DECLARE @A TABLE(AID INT,BID INT)
INSERT @A SELECT 1, 2
INSERT @A SELECT 2, 3
INSERT @A SELECT 3, 1
INSERT @A SELECT 4, 2
INSERT @A SELECT 5, 1
INSERT @A SELECT 6, 4
INSERT @A SELECT 7, 1
INSERT @A SELECT 8, 4
INSERT @A SELECT 9, 2
DECLARE @B TABLE(BID INT,BNAME NVARCHAR(10))
--bid(主键,自动) bname
INSERT @B SELECT 1 , N'我'
INSERT @B SELECT 2 , N'小麦'
INSERT @B SELECT 3 , N'小刘'
INSERT @B SELECT 4, N'小王'
SELECT TOP 3 BNAME=M.BNAME+'('+LTRIM(CNT)+'次)',BID FROM @B M INNER JOIN
(SELECT B.BNAME,COUNT(*)CNT FROM @A A INNER JOIN @B B ON A.BID=B.BID GROUP BY B.BNAME)N
ON M.BNAME=N.BNAME
ORDER BY N.CNT DESC
/*BNAME BID
-------------------------- -----------
小麦(3次) 2
我(3次) 1
小王(2次) 4
*/