2013-03-06 41 views
2

我需要使用IN子句獲得一組結果,但默認排序完成並返回結果。有沒有辦法在db2中維護in子句的順序?如何在DB2中使用IN子句時保留結果的順序?

ORDER BY FILED將在MySQL中的解決方案,但是在DB2中是否有相當的?

+0

是:使用ORDER BY! – 2013-03-06 05:22:43

+0

感謝您的答覆。這個清單在任何情況下都是動態的。我通過準備好的聲明調用它。 你能舉個例子嗎? – Sukanya 2013-03-06 05:24:53

+2

你的意思是你沒有發佈的代碼? – 2013-03-06 05:25:36

回答

0

據我瞭解,你想這樣做:

select foo from table where bar in (3, 1, 2); 

和秩序由項目欄相匹配。即bar = 3先來,然後是1,然後是2.

我不認爲有一種內置的方式可以在DB2中執行所需的操作。

但是,請查看this recent question,其中討論瞭解決方法。

0

如果你想要一個特定的順序結果,ORDER BY是如何做到這一點。除非使用ORDER BY,否則SQL不保證訂單。在結果集的排序順序和您選擇在任何IN()子句中列出項目的方式之間沒有任何關係。 IN()子句與它無關。

請注意,特定的排序順序可能在任何時候都可以在沒有ORDER BY的情況下通過純粹的運氣獲得。但是,不能保證。如果行隨時間變化,則可能會顯示不同的排序順序而不發出警告。

這是一個SQL行爲,而不是DB2。 DB2只是用於SQL這一行爲的工作方式。