问大家个SQLSERVER问题

webwangqi 2010-07-15 04:32:29
有个表我想随机取 100 条内容 但是每次取100条都做上标记以后不再取 有什么有效的办法么
...全文
109 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
kiruya0 2010-07-19
  • 打赏
  • 举报
回复
放到临时表count下就好了
  • 打赏
  • 举报
回复
1、随机取的比较好实现,上边都有了。
2、可以加一个状态字段来表示已经取过的,或者记录放到其他表中,或者删除。
feixianxxx 2010-07-17
  • 打赏
  • 举报
回复
--假设你的表主键(或者是能标记你的记录唯一值的字段)为ID,表名TB
create table tb (id int,value int)
--加上标识字段,默认为0
alter table tb add flag int default 0

set rowcount 100
while (1=1)
begin
update tb
set flag=1
where FLag=0
if @@ROWCOUNT<100 break;
end
set rowcount 0
drop table tb


这是2000的写法
feixianxxx 2010-07-17
  • 打赏
  • 举报
回复
修改下 默认FLAG=0

--假设你的表主键(或者是能标记你的记录唯一值的字段)为ID,表名TB
create table tb (id int,value int)
--加上标识字段,默认为0
alter table tb add flag int default 0
while (1=1)
begin
update top (100) tb
set flag=1
where FLag=0
if @@ROWCOUNT<100 break;
end

drop table tb

feixianxxx 2010-07-17
  • 打赏
  • 举报
回复
--假设你的表主键(或者是能标记你的记录唯一值的字段)为ID,表名TB
create table tb (id int,value int)
--加上标识字段
alter table tb add flag int
while (1=1)
begin
update top (100) tb
set flag=1
where FLag=0
if @@ROWCOUNT<100 break;
end

drop table tb

SQL 2005 可以这样做
hhping821 2010-07-17
  • 打赏
  • 举报
回复
路过,帮顶
飘零一叶 2010-07-16
  • 打赏
  • 举报
回复
写个存储过程吧 应该能简单些
webwangqi 2010-07-16
  • 打赏
  • 举报
回复
.... 能帮忙解决下嘛.. 程序代码也行
webwangqi 2010-07-15
  • 打赏
  • 举报
回复
方便说下QQ么 - - 我联系你说吧
黄_瓜 2010-07-15
  • 打赏
  • 举报
回复
--1
select * into tb from ta where 1<>1
--这里的tb表要有一个新的自增的id列
--2
INSRET INTO TB
SELECT TOP 100 * FROM TA WHERE NOT EXISTS(SELECT 1 FROM TB WHERE A.=B.ID)
--这里的id是 旧表中的id 或者唯一标示的东西
ORDER BY newid()--修改
--3
SELECT TOP 100 * FROM TB ORDER BY ID DESC
webwangqi 2010-07-15
  • 打赏
  • 举报
回复
- - 怎么随机取还不会 我是想可以建立个新字段 取到的在后面加标识. 具体不知道怎么做
黄_瓜 2010-07-15
  • 打赏
  • 举报
回复
--1
select * into tb from ta where 1<>1
--这里的tb表要有一个自增的id列
--2
INSRET INTO TB
SELECT TOP 100 * FROM TA WHERE NOT EXISTS(SELECT 1 FROM TB WHERE A.ID=B.ID)
ORDER BY newid()--修改
--3
SELECT TOP 100 * FROM TB ORDER BY ID DESC
黄_瓜 2010-07-15
  • 打赏
  • 举报
回复
--1
select * into tb from ta where 1<>1
--这里的tb表要有一个自增的id列
--2
INSRET INTO TB
SELECT TOP 10 * FROM TA WHERE NOT EXISTS(SELECT 1 FROM TB WHERE A.ID=B.ID)
ORDER BY ID DESE

--3
SELECT TOP 10 * FROM TB ORDER BY ID DESC
永生天地 2010-07-15
  • 打赏
  • 举报
回复
那要做在事务里
黄_瓜 2010-07-15
  • 打赏
  • 举报
回复
把取出来的数据放到你一新建的表中

27,580

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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