Sql DB2 rownum等价物
我在Oracle中有下面的查询,我想在DB2中复制它,DB2使用随机函数和rownum Oracle查询:Sql DB2 rownum等价物,sql,db2,db2-luw,Sql,Db2,Db2 Luw,我在Oracle中有下面的查询,我想在DB2中复制它,DB2使用随机函数和rownum Oracle查询: SELECT * FROM ( SELECT * FROM db2admin.QUESTION_BANK WHERE type='PROCESS' ORDER BY dbms_random.value ) WHERE rownum <=? 我得到了随机函数的替代值,但rownum没有。下面是DB2中的查询 SELECT * FROM ( S
SELECT *
FROM (
SELECT *
FROM db2admin.QUESTION_BANK
WHERE type='PROCESS'
ORDER BY dbms_random.value
) WHERE rownum <=?
我得到了随机函数的替代值,但rownum没有。下面是DB2中的查询
SELECT *
FROM (
SELECT *
FROM db2admin.QUESTION_BANK
WHERE type='PROCESS' ORDER BY RAND
) WHERE rownum <= ?
rownum的值通过PreparedStatement传递。当您在Oracle兼容模式下工作时,DB2具有。要仅启用此功能,请使用以下命令:
db2set DB2_COMPATIBILITY_VECTOR=01
db2stop
db2start
SELECT *
FROM db2admin.QUESTION_BANK
WHERE type = 'PROCESS'
ORDER BY RAND()
fetch first ? rows only;
要获得所有Oracle功能,请按如下方式启用:
db2set DB2_COMPATIBILITY_VECTOR=ORA
db2stop
db2start
上的文档详细介绍了备选方案,如
行号结束。当您在Oracle兼容模式下工作时,DB2有。要仅启用此功能,请使用以下命令:
db2set DB2_COMPATIBILITY_VECTOR=01
db2stop
db2start
SELECT *
FROM db2admin.QUESTION_BANK
WHERE type = 'PROCESS'
ORDER BY RAND()
fetch first ? rows only;
要获得所有Oracle功能,请按如下方式启用:
db2set DB2_COMPATIBILITY_VECTOR=ORA
db2stop
db2start
上的文档详细介绍了备选方案,如
排号结束。试试:
SELECT *
FROM (
SELECT f1.*, rownumber() over(ORDER BY f1.randm ) as rownum
from (
select f0.*, rand() as randm FROM db2admin.QUESTION_BANK f0
WHERE f0.type='PROCESS'
) f1
) f2
WHERE f2.rownum <= ?
试试看:
SELECT *
FROM (
SELECT f1.*, rownumber() over(ORDER BY f1.randm ) as rownum
from (
select f0.*, rand() as randm FROM db2admin.QUESTION_BANK f0
WHERE f0.type='PROCESS'
) f1
) f2
WHERE f2.rownum <= ?
您可以使用以下选项:
db2set DB2_COMPATIBILITY_VECTOR=01
db2stop
db2start
SELECT *
FROM db2admin.QUESTION_BANK
WHERE type = 'PROCESS'
ORDER BY RAND()
fetch first ? rows only;
您可以使用以下选项:
db2set DB2_COMPATIBILITY_VECTOR=01
db2stop
db2start
SELECT *
FROM db2admin.QUESTION_BANK
WHERE type = 'PROCESS'
ORDER BY RAND()
fetch first ? rows only;
使用ROW_NUMBER分析函数作为rownum的等效函数
SELECT *
FROM (
SELECT db2admin.*
, ROW_NUMBER() OVER () rownum
FROM db2admin.QUESTION_BANK
WHERE type='PROCESS'
ORDER BY dbms_random.value
) WHERE rownum <=?
使用ROW_NUMBER分析函数作为rownum的等效函数
SELECT *
FROM (
SELECT db2admin.*
, ROW_NUMBER() OVER () rownum
FROM db2admin.QUESTION_BANK
WHERE type='PROCESS'
ORDER BY dbms_random.value
) WHERE rownum <=?
先拿。。仅行或行编号,但带有行编号的随机数可以一起使用吗?。你能举一个例子吗?randI得到这个错误例程或表达式RAND的使用是无效的,因为它不是确定性的,或者有一个外部动作。。SQLCODE=-583,SQLSTATE=42845,DRIVER=4.18.60哪个DB2版本?先获取。。仅行或行编号,但带有行编号的随机数可以一起使用吗?。你能举一个例子吗?randI得到这个错误例程或表达式RAND的使用是无效的,因为它不是确定性的,或者有一个外部动作。。SQLCODE=-583,SQLSTATE=42845,DRIVER=4.18.60哪个版本的DB2?DB2_COMPATIBILITY_VECTOR在使用它的上下文中无效。。SQLCODE=-206,SQLSTATE=42703,DRIVER=4.18.60DB2_COMPATIBILITY_VECTOR在使用它的上下文中无效。。SQLCODE=-206,SQLSTATE=42703,DRIVER=4.18.60rand是一个函数,不是一个完美的列。这正是所需的任务。rand是一个函数,而不是一个完美的函数。这正是所需要的任务。是的,这非常有效。但是这里有一个问题,这不是只选择第一个吗?每次说20个问题,然后随机化吗?@SouravMehra:不,排序规则发生在应用第一个获取之前,如果你想看看一行的样子,就不必了。只有在提取数据样本时才使用它。是的,这非常有效。但是这里有一个问题,这不是只选择第一个吗?每次说20个问题,然后随机化吗?@SouravMehra:不,排序规则发生在应用第一个获取之前,如果你想看看一行的样子,就不必了。只有在提取数据样本时才使用它。使用前面注释的fetch更容易,不需要在空分区上使用分析函数clauseeasier使用前面注释的fetch,不需要在空分区子句上使用分析函数