一个sql 语句

lxl_sports 2009-12-18 02:33:26
我有一张表 里面有三个字段 编号、商圈名称、地区编号 那么我现在想要取 每个地区的前两个商圈名称 sql应该怎么写??(每个地区有很多的商圈,那么要取出每个地区的前两个。。。)
...全文
180 21 打赏 收藏 转发到动态 举报
写回复
用AI写文章
21 条回复
切换为时间正序
请发表友善的回复…
发表回复
ojuju10 2009-12-18
  • 打赏
  • 举报
回复

select * from
(
select a.*,row_number()over(partition by 地区编号 order by 编号 ) as num from ta a
) a
where num<=2
llllllllllllleon 2009-12-18
  • 打赏
  • 举报
回复
跟风
jaguar_yang 2009-12-18
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 momonn 的回复:]
引用 10 楼 jaguar_yang 的回复:
引用 8 楼 jaguar_yang 的回复:
引用 6 楼 momonn 的回复:
  select 商圈 from [table] where 地区编号 in (select top(2) 地区编号 from [table])

  已验证。


  这也已验证???

这条语句我给你简写一下:
select top 2 商圈 from [table]  order by  地区编号

完全不一样!!!!!
[/Quote]

我错了。
zhulong1111 2009-12-18
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 lovely_baby 的回复:]
select top 2 from taname where 地区编号 in(
select
  distinct
  地区编号
from taname order by 编号)
[/Quote]


这都写出来 ~~~~~~~~~~佩服,佩服
bp123 2009-12-18
  • 打赏
  • 举报
回复

select * from [表名] as dqTable
where [编号] in
(select top 2 [编号] from dqTable where [地区编号]=dqTable.[地区编号]
order by [编号])
order by [地区],[编号]
悔说话的哑巴 2009-12-18
  • 打赏
  • 举报
回复
你在这里搜索 数据合并,多的很,基本都和劳伤差不多
jidianxueyuan 2009-12-18
  • 打赏
  • 举报
回复

declare @t table(编号 int,商圈名称 varchar(4),地区编号 varchar(4))
insert @t select 1,'a','010'
union all select 2,'b','010'
union all select 4,'c','010'
union all select 5,'d','010'
union all select 6,'a','021'
union all select 7,'b','021'
union all select 8,'c','021'

select * from @t


select * from @t a

where 编号 in
(
select top 2 编号
from @t
where 地区编号=a.地区编号
order by 编号
)

wxd024 2009-12-18
  • 打赏
  • 举报
回复
顶4楼的
CopperBell 2009-12-18
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 jaguar_yang 的回复:]
引用 8 楼 jaguar_yang 的回复:
引用 6 楼 momonn 的回复:
select 商圈 from [table] where 地区编号 in (select top(2) 地区编号 from [table])

  已验证。


这也已验证???

这条语句我给你简写一下:
select top 2 商圈 from [table]  order by  地区编号
[/Quote]
完全不一样!!!!!
chengcheng1253 2009-12-18
  • 打赏
  • 举报
回复
D
bancxc 2009-12-18
  • 打赏
  • 举报
回复
这两个可不一样 哥们
jaguar_yang 2009-12-18
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 jaguar_yang 的回复:]
引用 6 楼 momonn 的回复:
select 商圈 from [table] where 地区编号 in (select top(2) 地区编号 from [table])

已验证。


这也已验证???
[/Quote]
这条语句我给你简写一下:
select top 2 商圈 from [table] order by 地区编号
wangan2008 2009-12-18
  • 打赏
  • 举报
回复
up

jaguar_yang 2009-12-18
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 momonn 的回复:]
select 商圈 from [table] where 地区编号 in (select top(2) 地区编号 from [table])

已验证。
[/Quote]

这也已验证???
jaguar_yang 2009-12-18
  • 打赏
  • 举报
回复
一条sql语句实现不了,只能用虚表,一般我的做法是把商圈全查出来再到程序里只取两条。
CopperBell 2009-12-18
  • 打赏
  • 举报
回复
select 商圈 from [table] where 地区编号 in (select top(2) 地区编号 from [table])

已验证。
cailee 2009-12-18
  • 打赏
  • 举报
回复
兰州结贴吧,我还差点就升三裤衩了,感谢啦。
我姓区不姓区 2009-12-18
  • 打赏
  • 举报
回复

select * from Test_table a where [编号] in (select top 2 [编号] from Test_table where [地区编号]=a.[地区编号])

Lovely_baby 2009-12-18
  • 打赏
  • 举报
回复
select top 2 from taname where 地区编号 in(
select
distinct
地区编号
from taname order by 编号)
cailee 2009-12-18
  • 打赏
  • 举报
回复
declare @t table(id int,col varchar(4),code varchar(4))
insert @t select 1,'a','010'
union all select 2,'b','010'
union all select 4,'c','010'
union all select 5,'d','010'
union all select 6,'f','021'

select * from @t

select * from @t a
where id in
(
select top 2 id
from @t
where code=a.code
order by id
)
/*

(5 行受影响)
id col code
----------- ---- ----
1 a 010
2 b 010
4 c 010
5 d 010
6 f 021

(5 行受影响)

id col code
----------- ---- ----
1 a 010
2 b 010
6 f 021

(3 行受影响)

*/
加载更多回复(1)

62,254

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

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