问一个SQL问题~

chia8546 2010-09-03 05:12:09
假如有表A如:
列1 列2
行1 AA 563
行2 AA 156
行3 AA 635
行4 BB 352
行5 BB 434
行6 BB 455
行7 AA 452
行8 CC 243
行9 CC 234
……

假设列1中数据有很多完全相同内容,如何写查询,让相同内容的数据以随机方式出现N(自己指定)条,比如AA随机取2条,那么BB也是2条等,在同一个表中返回此查询应该怎么写语句啊?求教。
...全文
113 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
paratemper 2010-09-07
  • 打赏
  • 举报
回复
那怎么办
baiying15 2010-09-07
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 chia8546 的回复:]
还是没有用啊ROW_NUMBER不是有效的函数~
[/Quote]
LZ应该用的是2000,或者2005一下的版本,所以没有这个函数;要05以上的版本才有这个函数。
wandola001 2010-09-07
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 kaiaiyaya 的回复:]
select *
from(select rowid=row_number() over(partition by 列1 order by newid()),*) as a
where rowid<=2
[/Quote]

……over(partition by 列1 order by newid()),* from A) as a……
试试
kiruya0 2010-09-07
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 chia8546 的回复:]

还是没有用啊ROW_NUMBER不是有效的函数~
[/Quote]
LZ用的是SQL 2005伐?或者以上版本?
chia8546 2010-09-07
  • 打赏
  • 举报
回复
还是没有用啊ROW_NUMBER不是有效的函数~
kaiaiyaya 2010-09-03
  • 打赏
  • 举报
回复
select *
from(select rowid=row_number() over(partition by 列1 order by newid()),*) as a
where rowid<=2
chia8546 2010-09-03
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 liangck 的回复:]
select *
from(select rowid=row_number() over(partition by 列1 order by newid()),*) as a
where rowid<=2
[/Quote]


服务器: 消息 195,级别 15,状态 10,行 1
SQL SERVER 2005 'row_number' 不是可以识别的 函数名
华夏小卒 2010-09-03
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 liangck 的回复:]
select *
from(select rowid=row_number() over(partition by 列1 order by newid()),*) as a
where rowid<=2
[/Quote]
小梁哥,这个用apply怎么做的,我没写出来
csuxp2008 2010-09-03
  • 打赏
  • 举报
回复
这里的 where rowid<=2
红色部分即为N,可自行修改
csuxp2008 2010-09-03
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 liangck 的回复:]
select *
from(select rowid=row_number() over(partition by 列1 order by newid()),*) as a
where rowid<=2
[/Quote]

UP!
liangCK 2010-09-03
  • 打赏
  • 举报
回复
select *
from(select rowid=row_number() over(partition by 列1 order by newid()),*) as a
where rowid<=2

34,872

社区成员

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

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