求一个删除的方法

friendlyFour 2007-04-27 04:18:02
学生选课表中存在这样一些数据:
用户名 课程ID
liangw 10001a
liangw 10002a
liangw 10003a
liangw 10004a
liangw 10005a
liangw 10006a
...
liangw1 10001a
liangw1 10002a
liangw1 10003a
liangw1 10004a
liangw1 10005a
...

要求 -- (当预约门数限制如:3门)那么我要删除一些超出3门限制的课程要怎么删除啊。(如果使用游标的话我知道怎么写,可我不想用,所以不知道有什么方法可以办到吗)
希望的结果为:
liangw 10001a
liangw 10002a
liangw 10003a
liangw1 10001a
liangw1 10002a
liangw1 10003a
...全文
132 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
肥胖的柠檬 2007-04-27
  • 打赏
  • 举报
回复
create table #test (a nvarchar(20),b nvarchar(20))

insert into #test
select 'liangw', '10001a' union all
select 'liangw', '10002a' union all
select 'liangw', '10003a' union all
select 'liangw', '10004a' union all
select 'liangw', '10005a' union all
select 'liangw', '10006a' union all
select 'liangw1', '10001a' union all
select 'liangw1', '10002a' union all
select 'liangw1', '10003a' union all
select 'liangw1', '10004a' union all
select 'liangw1', '10005a'


select * from #test t where
(select count(*) from #test where t.a=a and t.b>b)<3

--------------------------

(所影响的行数为 11 行)

a b
-------------------- --------------------
liangw 10001a
liangw 10002a
liangw 10003a
liangw1 10001a
liangw1 10002a
liangw1 10003a

(所影响的行数为 6 行)
肥胖的柠檬 2007-04-27
  • 打赏
  • 举报
回复
select * from table t
where (select count(*) from table where 用户名 = t.用户名 and 课程ID > t.课程ID) <3

34,588

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧