求A表的数量由B表的字段来控制,不知道怎么写

ChinaXtHuLang 2015-09-25 03:52:11
主表A,有字段ClassId
副表B,有字段:Id,和A表ClassId是关联的,还个字段是:MaxNum是用来控制A表显示数量

求是SQL语句是:
查询主表关联副表,利用MaxNum来显示数量

Select a.* From a Left Join b On a.ClassId = b.Id
这是普通的查询。

怎么利用MaxNum控制数量?
...全文
169 点赞 收藏 10
写回复
10 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
yooq_csdn 2015-09-28
2005 或 2008 用ROW_NUMBER() over() 按楼上的方法肯定可以的
回复
等不到来世 2015-09-28
Select a.* From a 
Left Join b On a.ClassId = b.Id
Left Join (select cnt=number from master..spt_values where type='p') c On b.MaxNum>c.cnt
回复
ChinaXtHuLang 2015-09-28
引用 8 楼 yooq_csdn 的回复:
2005 或 2008 用ROW_NUMBER() over() 按楼上的方法肯定可以的
具体是写法啊?
回复
xqchenxue2 2015-09-26
我写错了,是Id,总之是没问题的。
回复
ChinaXtHuLang 2015-09-25
求大神帮忙看看看啊 SQL 2005 A表中的是ClassId 是int类型 B表中的是字段是:Id,Bname,MaxNum Id,MaxNum是int类型 A表中的:ClassId 与 B表中是ID是关联的。用B表中的MaxNum来控制A表的显示数量
回复
ChinaXtHuLang 2015-09-25
引用 4 楼 xqchenxue2 的回复:
select A.* from A a join (select ROW_NUMBER() over(partition by ClassId order by ClassId) rcnt,B.classid,B.MaxNum from B) t on a.id=t.classid where rcnt <=t.MaxNum
不行额。。B表没有ClassId。。。 CSDN。。我勒个去。。打开这个页面。弄了我20分钟才打开。要不要这么卡啊。。
回复
xqchenxue2 2015-09-25
select A.* from A a join (select ROW_NUMBER() over(partition by ClassId order by ClassId) rcnt,B.classid,B.MaxNum from B) t on a.id=t.classid where rcnt <=t.MaxNum
回复
ChinaXtHuLang 2015-09-25
引用 1 楼 yooq_csdn 的回复:
sqlserver 什么版本?
2005行吗?不行2008是我这边最高的。
回复
ChinaXtHuLang 2015-09-25
引用 1 楼 yooq_csdn 的回复:
sqlserver 什么版本?
2005
回复
yooq_csdn 2015-09-25
sqlserver 什么版本?
回复
相关推荐
发帖
疑难问题
创建于2007-09-28

2.1w+

社区成员

MS-SQL Server 疑难问题
申请成为版主
帖子事件
创建了帖子
2015-09-25 03:52
社区公告
暂无公告