能不能取表的任意一半数据和另一半数据,好希望能取
如何取,谢谢
问题点数:50、回复次数:7Top
1 楼duanzilin(寻)回复于 2006-02-21 16:43:31 得分 30
SELECT * FROM (SELECT t.*, NTILE(2) OVER(ORDER BY dbms_random.VALUE) tmpcol FROM t) WHERE tmpcol = 1Top
2 楼duanzilin(寻)回复于 2006-02-21 16:55:09 得分 0
我这里是查询了其中一半的数据,但是不能通过2次查询取得另一半数据,因为2次查询数据都是随机排序的,不能保证后面一次查询是另一半。 要查另一半数据可以先执行查询:SELECT * FROM (SELECT t.*, NTILE(2) OVER(ORDER BY dbms_random.VALUE) tmpcol FROM t) ,把结果存在游标或dataset中,然后取tmpcol 为1的就是其中一半,tmpcol为2的是另外一半,分析函数NTILE(2)就是把数据均匀的分成2个组,如果是NTILE(3)就是分3个组Top
3 楼boydgmx(授人以鱼不如授人以渔(baidu&google))回复于 2006-02-21 17:58:18 得分 20
SELECT提供了SAMPLE子句来从表中随机读取采样数据。
SELECT ...table_name SAMPLE [BLOCK] (sample_percent)
你可以随机读取块而不是行来采样记录,对于块采样,BLOCK关键词是必需的。可选的采样率必须小于100。
当使用SAMPLE子句,只能从单表中读取。连接查询不支持。
select * from tbl SAMPLE(50);Top
4 楼sillyli(棒棒)回复于 2006-02-21 18:47:54 得分 0
但是还想准确的取得另一半数据,有什么办法吗
我是想让前一半数据和后一半数据并行作某些操作Top
5 楼sillyli(棒棒)回复于 2006-02-21 18:57:37 得分 0
to duanzilin(寻):表数据量较大,这样效率会不会慢,而且这两部分数据要用两个会话处理
另,这两部分数据大致相等即可,
只要用一个sql语句取第一部分,另一个sql语句准确取得另一部分即可
Top
6 楼duanzilin(寻)回复于 2006-02-22 09:47:08 得分 0
如果是取任意一半取数据的话用2个sql不大现实,因为sql执行2次的结果都是随机的,而且是两个会话,用临时表也不可取,只有建一个中间表,第一次随机取得一半数据放入中间表,第2次用中间表和原表关联取另一半Top
7 楼zlz_212(ShREk)回复于 2006-02-22 09:48:38 得分 0
关注Top
相关问题
- 如何将任意数据库中数据表中的数据导出成Excel文件且不通过ODBC?
- 如何将任意数据库中数据表中的数据导入到ACCESS库中(用ADO)
- 爽博,另一半来了!
- 各位大虾 请问怎样获取任意ACCESS数据库中数据表的名称啊?
- 我用datalist连接数据库,为什么只显示了一半的数据,另一半没显示. 显示数据的索引值为0,2,4,6,8....希望高手给解答一下
- 如何读出任意Access数据库的表名和字段名?
- ▲▲▲查询数据表中任意20条记录,可以实现吗?
- help!数据表
- ADO如何实现两个数据库(任意数据库类型)的两个相同结构表的数据拷贝
- ======C/S下如何在表单上生成任意数量的“表格”(根据数据库中的某些记录)=======




