我有一個表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可以不處理主機變量數組嗎?這正是我假設他正在使用的(所以不需要分裂,儘管其餘的想法都是正確的)。 –