【发布时间】:2010-08-05 21:19:03
【问题描述】:
由于我使用的是 DB2,为了在中间选择数据库的一部分(如限制/偏移配对),我需要执行不同类型的准备语句。给我的例子是这样的:
选择 * FROM (SELECT col1, col2, col3, ROW_NUMBER() OVER () AS RN FROM table) AS cols 其中 RN 介于 1 和 10000 之间;
我适应了这个:
SELECT * FROM (SELECT ROW_NUMBER() OVER (ORDER BY 2,3,4,6,7 ASC) AS rownum FROM TRANSACTIONS) AS foo WHERE rownum >= 500 AND rownum
当我调用 fetchall_arrayref() 时,我确实得到了我想要的 500 个结果,但它只返回一个包含行号引用的数组,而不是我想要提取的所有数据。我知道这就是代码在编写时应该做的事情,并且我尝试了一堆排列来获得我想要的结果,但没有运气。
我想要的只是像我之前的准备语句一样将所有列抓取到一个数组数组中: SELECT * FROM TU_TRANSACTIONS ORDER BY 2, 3, 4, 6, 7
但只是在指定的部分。我只是缺少一个基本的东西,我只是看不到它。
感谢任何帮助,即使它伴随着一些建设性的批评。
【问题讨论】:
-
你试过用 RRN(相对记录号)代替 row_number 吗? SELECT T.*, RRN(T) FROM TU_TRANSACTIONS T WHERE RRN(T) BETWEEN 500 and 1000 ORDER BY 2,3,4,6,7