查看: 10226|回复: 10

order by sys_guid() 不生效

[复制链接]
招聘 : 数据库开发
论坛徽章:
13
授权会员
日期:2006-05-27 13:42:05马上有钱
日期:2014-07-30 11:12:06马上有车
日期:2014-02-18 16:41:112014年新春福章
日期:2014-02-18 16:41:112011新春纪念徽章
日期:2011-05-06 13:11:272011新春纪念徽章
日期:2011-02-18 11:42:472010新春纪念徽章
日期:2010-03-01 11:20:52CTO参与奖
日期:2009-02-12 11:45:48ITPUB元老
日期:2008-10-31 12:59:35ITPUB新首页上线纪念徽章
日期:2007-10-20 08:38:44
发表于 2008-8-29 11:45 | 显示全部楼层 |阅读模式
RHEL4.5 + 10.2.0.2

select * from (select * from user_objects order by sys_guid()) where rownum<3;

语句不管用, 并不随机生成数据,  经过几个RHEL4.5+10.2.0.2的环境测试, 都是不生效, 但是在windwos系统下确实是管用的,

经过测试, 在我的环境下如下的方法是有用的!

select * from (select * from user_objects  order by dbms_random.value) where rownum<3;



各位高手谁给解释一下, 这是为什么呢?
招聘 : 数据库开发
论坛徽章:
13
授权会员
日期:2006-05-27 13:42:05马上有钱
日期:2014-07-30 11:12:06马上有车
日期:2014-02-18 16:41:112014年新春福章
日期:2014-02-18 16:41:112011新春纪念徽章
日期:2011-05-06 13:11:272011新春纪念徽章
日期:2011-02-18 11:42:472010新春纪念徽章
日期:2010-03-01 11:20:52CTO参与奖
日期:2009-02-12 11:45:48ITPUB元老
日期:2008-10-31 12:59:35ITPUB新首页上线纪念徽章
日期:2007-10-20 08:38:44
 楼主| 发表于 2008-8-29 13:01 | 显示全部楼层
高手给看看

使用道具 举报

回复
招聘 : 数据库开发
论坛徽章:
13
授权会员
日期:2006-05-27 13:42:05马上有钱
日期:2014-07-30 11:12:06马上有车
日期:2014-02-18 16:41:112014年新春福章
日期:2014-02-18 16:41:112011新春纪念徽章
日期:2011-05-06 13:11:272011新春纪念徽章
日期:2011-02-18 11:42:472010新春纪念徽章
日期:2010-03-01 11:20:52CTO参与奖
日期:2009-02-12 11:45:48ITPUB元老
日期:2008-10-31 12:59:35ITPUB新首页上线纪念徽章
日期:2007-10-20 08:38:44
 楼主| 发表于 2008-8-29 14:28 | 显示全部楼层
order by dbms_random.value 确实是有效的, 目前通过测试, 在应用里上线正常使用了!   order by sys_guid()我在之前的其他系统上也是使用正常的, 这次在RHEL4.5 10.2.0.2的系统就不行了!

使用道具 举报

回复
招聘 : 数据库开发
论坛徽章:
13
授权会员
日期:2006-05-27 13:42:05马上有钱
日期:2014-07-30 11:12:06马上有车
日期:2014-02-18 16:41:112014年新春福章
日期:2014-02-18 16:41:112011新春纪念徽章
日期:2011-05-06 13:11:272011新春纪念徽章
日期:2011-02-18 11:42:472010新春纪念徽章
日期:2010-03-01 11:20:52CTO参与奖
日期:2009-02-12 11:45:48ITPUB元老
日期:2008-10-31 12:59:35ITPUB新首页上线纪念徽章
日期:2007-10-20 08:38:44
 楼主| 发表于 2008-8-29 14:29 | 显示全部楼层

  1. select b.id,b.login_name,b.gender,b.age from
  2. (select * from (
  3. select id
  4.   from  t
  5. where t.gender = 1
  6.    and t.age = 22
  7.    and t.status = 1
  8. order by dbms_random.value) where rownum <=30 ) a,
  9. b
  10. where a.id=b.id
复制代码



如上语句确实有效

使用道具 举报

回复
招聘 : 数据库开发
论坛徽章:
13
授权会员
日期:2006-05-27 13:42:05马上有钱
日期:2014-07-30 11:12:06马上有车
日期:2014-02-18 16:41:112014年新春福章
日期:2014-02-18 16:41:112011新春纪念徽章
日期:2011-05-06 13:11:272011新春纪念徽章
日期:2011-02-18 11:42:472010新春纪念徽章
日期:2010-03-01 11:20:52CTO参与奖
日期:2009-02-12 11:45:48ITPUB元老
日期:2008-10-31 12:59:35ITPUB新首页上线纪念徽章
日期:2007-10-20 08:38:44
 楼主| 发表于 2008-8-29 14:36 | 显示全部楼层
可以运行, 但是一直返回同样记录!

使用道具 举报

回复
招聘 : 数据库开发
论坛徽章:
13
授权会员
日期:2006-05-27 13:42:05马上有钱
日期:2014-07-30 11:12:06马上有车
日期:2014-02-18 16:41:112014年新春福章
日期:2014-02-18 16:41:112011新春纪念徽章
日期:2011-05-06 13:11:272011新春纪念徽章
日期:2011-02-18 11:42:472010新春纪念徽章
日期:2010-03-01 11:20:52CTO参与奖
日期:2009-02-12 11:45:48ITPUB元老
日期:2008-10-31 12:59:35ITPUB新首页上线纪念徽章
日期:2007-10-20 08:38:44
 楼主| 发表于 2008-8-29 14:54 | 显示全部楼层
呵呵  感谢版主的帮助了!  等你的消息了.   谢谢

使用道具 举报

回复
招聘 : 数据库开发
论坛徽章:
13
授权会员
日期:2006-05-27 13:42:05马上有钱
日期:2014-07-30 11:12:06马上有车
日期:2014-02-18 16:41:112014年新春福章
日期:2014-02-18 16:41:112011新春纪念徽章
日期:2011-05-06 13:11:272011新春纪念徽章
日期:2011-02-18 11:42:472010新春纪念徽章
日期:2010-03-01 11:20:52CTO参与奖
日期:2009-02-12 11:45:48ITPUB元老
日期:2008-10-31 12:59:35ITPUB新首页上线纪念徽章
日期:2007-10-20 08:38:44
 楼主| 发表于 2008-8-29 17:11 | 显示全部楼层
恩 我之前也测试了版主这个测试!  现在就是不知道sys_guid()的取值方法, 跟系统有什么关系!

使用道具 举报

回复
论坛徽章:
4
祖国60周年纪念徽章
日期:2009-10-09 08:28:00
发表于 2008-8-31 11:50 | 显示全部楼层
和版本有关系

使用道具 举报

回复
论坛徽章:
10
ITPUB新首页上线纪念徽章
日期:2007-10-20 08:38:44祖国60周年纪念徽章
日期:2009-10-09 08:28:002009新春纪念徽章
日期:2009-01-04 14:52:28奥运会纪念徽章:沙滩排球
日期:2008-10-24 13:14:46奥运会纪念徽章:举重
日期:2008-08-09 07:34:41奥运会纪念徽章:沙滩排球
日期:2008-07-27 20:48:01奥运会纪念徽章:皮划艇激流回旋
日期:2008-07-22 19:31:45奥运会纪念徽章:拳击
日期:2008-07-19 16:09:472008新春纪念徽章
日期:2008-02-13 12:43:032010年世界杯参赛球队:斯洛伐克
日期:2010-06-13 00:10:04
发表于 2008-8-31 12:57 | 显示全部楼层
我的版本10.2.0.1 rhel4.6,是可以的,select sys_guid() from dual;

随机数

使用道具 举报

回复
论坛徽章:
10
ITPUB新首页上线纪念徽章
日期:2007-10-20 08:38:44祖国60周年纪念徽章
日期:2009-10-09 08:28:002009新春纪念徽章
日期:2009-01-04 14:52:28奥运会纪念徽章:沙滩排球
日期:2008-10-24 13:14:46奥运会纪念徽章:举重
日期:2008-08-09 07:34:41奥运会纪念徽章:沙滩排球
日期:2008-07-27 20:48:01奥运会纪念徽章:皮划艇激流回旋
日期:2008-07-22 19:31:45奥运会纪念徽章:拳击
日期:2008-07-19 16:09:472008新春纪念徽章
日期:2008-02-13 12:43:032010年世界杯参赛球队:斯洛伐克
日期:2010-06-13 00:10:04
发表于 2008-8-31 13:03 | 显示全部楼层
ALTER TABLE locations ADD (uid_col RAW(32));

UPDATE locations SET uid_col = SYS_GUID();

SELECT location_id, uid_col FROM locations;

LOCATION_ID UID_COL
----------- ----------------------------------------
       1000 7CD5B7769DF75CEFE034080020825436
       1100 7CD5B7769DF85CEFE034080020825436
       1200 7CD5B7769DF95CEFE034080020825436
       1300 7CD5B7769DFA5CEFE034080020825436

使用道具 举报

回复

您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

TOP技术积分榜 社区积分榜 徽章 团队 统计 知识索引树 积分竞拍 文本模式 帮助
  ITPUB首页 | ITPUB论坛 | 数据库技术 | 企业信息化 | 开发技术 | 微软技术 | 软件工程与项目管理 | IBM技术园地 | 行业纵向讨论 | IT招聘 | IT文档
  ChinaUnix | ChinaUnix博客 | ChinaUnix论坛
CopyRight 1999-2011 itpub.net All Right Reserved. 北京盛拓优讯信息技术有限公司版权所有 联系我们 未成年人举报专区 
京ICP备16024965号-8  北京市公安局海淀分局网监中心备案编号:11010802021510 广播电视节目制作经营许可证:编号(京)字第1149号
  
快速回复 返回顶部 返回列表