我有一组主键。该集合按照记录的显示方式排序。
我想按照与排序集中相同的顺序从数据库中检索记录。
目前我正在这样做:
cursor getdata is
select snr, -- snr is the primary key
field1,
field2,
field3
from MyTable,
(select COLUMN_VALUE snr, rownum sort_key from TABLE(varray_of_snr)) snr_tab
where MyTable.snr = snr_tab.snr
order by snr_tab.sort_key;
问题在于 Oracle 不必按照 varray
中的顺序读取内部 select 中的行。无法保证 Oracle 不会从内部 select 中的 varray
中以相反的顺序读取行。
是否有一种简单的方法来保证保留排序顺序?
最佳答案
据我所知,除非指定 ORDER BY,否则永远无法保证任何数据集的 ORDER。
如果数组的顺序是任意的,我建议包括一个在存储数据时填充的 row_id 字段。仅当您可以推断排序并使用 ORDER BY 子句时,才应使用 rownum
。
关于sql - 根据一组排序的主键检索数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8296033/