取出表中n条相同数据内容

常遇道 2006-05-19 07:30:41
如表记录为:
序号,姓名,籍贯
1 张三 广东
2 李四 广东
3 王二 广东
4 麻子 广东
5 李明 广东
6 刘二 广东
7 吴号 江苏
8 李四 江苏
9 刘名 江苏
10 成名 江苏
11 李波 江苏
12 张三 江苏

实现的就是要取出相同籍贯数据的前4条记录为

1 张三 广东
2 李四 广东
3 王二 广东
4 麻子 广东
7 吴号 江苏
8 李四 江苏
9 刘名 江苏
10 成名 江苏

...全文
149 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
常遇道 2006-05-20
  • 打赏
  • 举报
回复
搞定了,谢上楼上的
云中客 2006-05-19
  • 打赏
  • 举报
回复
select * from t x where 序号 in(select top 4 序号 from t where 籍贯=x.籍贯)
lxzm1001 2006-05-19
  • 打赏
  • 举报
回复
select * from t x where(select count(1) from t where 籍贯=x.籍贯 and 序号<=x.序号)<=4
xeqtr1982 2006-05-19
  • 打赏
  • 举报
回复
楼上正解
eddy8863 2006-05-19
  • 打赏
  • 举报
回复
declare @t table(序号 int,姓名 varchar(10),籍贯 varchar(10))
insert @t select 1, '张三', '广东'
insert @t select 2, '李四', '广东'
insert @t select 3, '王二', '广东'
insert @t select 4, '麻子', '广东'
insert @t select 5, '李明', '广东'
insert @t select 6, '刘二', '广东'
insert @t select 7, '吴号', '江苏'
insert @t select 8, '李四', '江苏'
insert @t select 9, '刘名', '江苏'
insert @t select 10, '成名', '江苏'
insert @t select 11, '李波', '江苏'
insert @t select 12, '张三', '江苏'

select a.* from @t a,
(select *,[num]=(select count(1) from @t where 籍贯=a.籍贯 and 序号<=a.序号) from @t a ) b
where a.序号=b.序号 and b.num<=4


序号 姓名 籍贯
----------- ---------- ----------
1 张三 广东
2 李四 广东
3 王二 广东
4 麻子 广东
7 吴号 江苏
8 李四 江苏
9 刘名 江苏
10 成名 江苏

(所影响的行数为 8 行)
lxzm1001 2006-05-19
  • 打赏
  • 举报
回复
create table t(序号 int,姓名 varchar(10),籍贯 varchar(10))
insert into t select 1 ,'张三' ,'广东'
union all select 2, '李四', '广东'
union all select 3, '王二', '广东'
union all select 4, '麻子', '广东'
union all select 5, '李明', '广东'
union all select 6, '刘二', '广东'
union all select 7, '吴号', '江苏'
union all select 8, '李四', '江苏'
union all select 9 ,'刘名', '江苏'
union all select 10, '成名', '江苏'
union all select 11, '李波' ,'江苏'
union all select 12 ,'张三', '江苏'
select * from t

select * from t x where 序号 in(select top 4 序号 from t where 籍贯=x.籍贯)
常遇道 2006-05-19
  • 打赏
  • 举报
回复
这样得的写很多语句。而且不灵活。
xeqtr1982 2006-05-19
  • 打赏
  • 举报
回复
--这样?
declare @t table(序号 int,姓名 varchar(10),籍贯 varchar(10))
insert into @t select 1 ,'张三' ,'广东'
union all select 2, '李四', '广东'
union all select 3, '王二', '广东'
union all select 4, '麻子', '广东'
union all select 5, '李明', '广东'
union all select 6, '刘二', '广东'
union all select 7, '吴号', '江苏'
union all select 8, '李四', '江苏'
union all select 9 ,'刘名', '江苏'
union all select 10, '成名', '江苏'
union all select 11, '李波' ,'江苏'
union all select 12 ,'张三', '江苏'

select top 4 姓名,籍贯 from @t where 籍贯='广东'
union all
select top 4 姓名,籍贯 from @t where 籍贯='江苏'

22,209

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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