P Pearl. Unregistered / Unconfirmed GUEST, unregistred user! 2002-05-23 #81 连GUID是128位的都不知道还在这挑战富翁。 32位? 用脑子想想吧, 32位无类型整数只有40多忆, 还没地球人口多, 怎莫可能是全世界唯一的?
F Fanny501 Unregistered / Unconfirmed GUEST, unregistred user! 2002-05-24 #82 to wzs,我是个新手,特别是数据库方面。但是我认为在实现上,这是一个很容易处理的问题。 1.在表的主键范围内取一个随机数 tmpID。 2.select top 1 * from table1 where 主键 >= tmpID 3.在我工作近一年的经历里,我见过很多记录量很大的表,通常都会有个具有一定意义的主键。 eg。使用时间作主键, 使用一个某个表约定的渐增数作主键, 。。。 以时间为例,如果我们的业务操作的时间是:从1998年1月1日 至 今, 我们要在delphi中取得一个随机的 >= 1998年1月1日 <= 今天 的TmpID 应该很容易。 所以: 如果你同意这个观点请给分。
to wzs,我是个新手,特别是数据库方面。但是我认为在实现上,这是一个很容易处理的问题。 1.在表的主键范围内取一个随机数 tmpID。 2.select top 1 * from table1 where 主键 >= tmpID 3.在我工作近一年的经历里,我见过很多记录量很大的表,通常都会有个具有一定意义的主键。 eg。使用时间作主键, 使用一个某个表约定的渐增数作主键, 。。。 以时间为例,如果我们的业务操作的时间是:从1998年1月1日 至 今, 我们要在delphi中取得一个随机的 >= 1998年1月1日 <= 今天 的TmpID 应该很容易。 所以: 如果你同意这个观点请给分。
F Fanny501 Unregistered / Unconfirmed GUEST, unregistred user! 2002-05-24 #83 to 悟空1: 在实际的操作中,我们也发现ORDER BY 不一定会令查询的速度减慢, 相反,我的体会是可以加快查询速度。 以前我曾到社保局数据中心试过: select Count(*) from table order by 主键 比 select Count(*) from table 快了差不多10倍,(数据库为oracle ,数据量为差不多20万)。 至于其中的缘由,我不知道,也很想知道。:)^_^
to 悟空1: 在实际的操作中,我们也发现ORDER BY 不一定会令查询的速度减慢, 相反,我的体会是可以加快查询速度。 以前我曾到社保局数据中心试过: select Count(*) from table order by 主键 比 select Count(*) from table 快了差不多10倍,(数据库为oracle ,数据量为差不多20万)。 至于其中的缘由,我不知道,也很想知道。:)^_^
穿 穿越沦陷的爱 Unregistered / Unconfirmed GUEST, unregistred user! 2002-12-30 #88 select top 1 * from table order by NewID() 有何不好 ? 天真 : SELECT * FROM dbo.f WHERE (ID = CAST(RAND() * 10000 AS int)) 有何不对 ?
select top 1 * from table order by NewID() 有何不好 ? 天真 : SELECT * FROM dbo.f WHERE (ID = CAST(RAND() * 10000 AS int)) 有何不对 ?
S ssss__0002 Unregistered / Unconfirmed GUEST, unregistred user! 2002-12-30 #89 http://www.delphibbs.com/delphibbs/dispq.asp?lid=986051
M MrMengyi Unregistered / Unconfirmed GUEST, unregistred user! 2002-12-30 #90 还未结束啊 不如不要用什么数据库了 直接硬盘存取得了 几个随机数就搞定了 备分数据可能还简单点
【 【小高】 Unregistered / Unconfirmed GUEST, unregistred user! 2002-12-30 #92 [red]好好玩,就像江湖侠客在比试,只等那隐去的高手来评理!! 而我,哈哈,只能做观看的过客啦![/red]
天 天真 Unregistered / Unconfirmed GUEST, unregistred user! 2002-12-31 #94 穿越沦陷的爱, 你看看你的数据库表中有多少条记录啊 如果只有四条 SELECT * FROM dbo.f WHERE (ID = CAST(RAND() * 4 AS int)) 呵呵,这条语句不很通用的:) 你得理解他的意思
穿越沦陷的爱, 你看看你的数据库表中有多少条记录啊 如果只有四条 SELECT * FROM dbo.f WHERE (ID = CAST(RAND() * 4 AS int)) 呵呵,这条语句不很通用的:) 你得理解他的意思
穿 穿越沦陷的爱 Unregistered / Unconfirmed GUEST, unregistred user! 2002-12-31 #95 我觉得用Rand() 来取是可行的,也是高效的,具体怎么用应该按照需要 select top 1 * from table order by NewID() 这个很通用,而且也觉得挺好,并没有效率上多大的牺牲,一直在用
我觉得用Rand() 来取是可行的,也是高效的,具体怎么用应该按照需要 select top 1 * from table order by NewID() 这个很通用,而且也觉得挺好,并没有效率上多大的牺牲,一直在用
Z zxbyh Unregistered / Unconfirmed GUEST, unregistred user! 2002-12-31 #97 (*(*^*^$^%()&()*&&%&thorn;?!
J jihenglixin Unregistered / Unconfirmed GUEST, unregistred user! 2003-05-07 #98 wzs ? ,是不是我要找的吴正松? 发个mail给我,太多问题要问你了.[] jihengxinxin@sina.com 我是国隆的季珩
C creation-zy Unregistered / Unconfirmed GUEST, unregistred user! 2004-04-30 #99 怎么回事?这个问题又被提前了?! 斑竹何在? 根据楼主的原题(http://www.delphibbs.com/delphibbs/dispq.asp?lid=971277): >>怎样构造 随机取一条记录的SQL语句 >>SQL只能返回一条记录!!! >>且每次记录不能重复!!!! 相信大家可以从这短短的N行中看出M个逻辑以及概念错误。 什么是“随机”?——真随机?伪随机?怎么随机? “每次...不能重复”!?——设一张表有N条记录,在“随机”取M次记录的情况下, 可能做到“每次都不重复”吗?如果说只取一次,那肯定不会重复——Top1即可满足题意。 如果要取多次,并且不能重复——如果不允许在抽取的过程中更新数据库的话——我只能将 关键字段取回本地,然后用“不重复随机取数”算法进行抽取——很遗憾,为了满足楼主的 要求,我不能依靠SQL技巧了。 强烈要求尽快结贴。
怎么回事?这个问题又被提前了?! 斑竹何在? 根据楼主的原题(http://www.delphibbs.com/delphibbs/dispq.asp?lid=971277): >>怎样构造 随机取一条记录的SQL语句 >>SQL只能返回一条记录!!! >>且每次记录不能重复!!!! 相信大家可以从这短短的N行中看出M个逻辑以及概念错误。 什么是“随机”?——真随机?伪随机?怎么随机? “每次...不能重复”!?——设一张表有N条记录,在“随机”取M次记录的情况下, 可能做到“每次都不重复”吗?如果说只取一次,那肯定不会重复——Top1即可满足题意。 如果要取多次,并且不能重复——如果不允许在抽取的过程中更新数据库的话——我只能将 关键字段取回本地,然后用“不重复随机取数”算法进行抽取——很遗憾,为了满足楼主的 要求,我不能依靠SQL技巧了。 强烈要求尽快结贴。