我有一个表MY_TABLE,主键为MY_PK。然后,我有一个有序的主键列表,例如(17,13,35,2,9)。如何在Oracle/SQL中以给定顺序检索行?
现在我想用这些主键检索所有行,并按照给定键的列表相同的方式保持行的顺序。
我initally做什么:
SELECT * FROM MY_TABLE WHERE MY_PK IN (:my_list)
但随后返回行的顺序是随机的,不符合给定键的顺序了。有没有办法实现这一点? 我唯一想到的是生成许多SELECT语句并将它们与UNION连接起来,但我的主键列表可能非常长,并且包含数百甚至数千个键。我想到的另一种方法是在应用程序中对行进行重新排序,但我宁愿选择不需要的解决方案。
Oracle,没有,没有RDBMS我知道将保证结果的排序,除非提供了'ORDER BY'语句。而且oracle可以不处理主机变量数组吗?这正是我假设他正在使用的(所以不需要分裂,尽管其余的想法都是正确的)。 –