What you have is going to return anything with an order id in that group ordered by the order they are found. (That makes sense, right?.) If you want to explicitly set an order, you should use the ORDER BY clause, however I don't think you can set a "custom" order for an ORDER BY clause. What you may have to do is do a UNION ALL.
Code:
(SELECT * FROM test WHERE orderID = 10)
UNION ALL
(SELECT * FROM test WHERE orderID = 5)
UNION ALL
(SELECT * FROM test WHERE orderID = 9)
If that won't work for your situation (perhaps you have many many orderIDs), the only other thing I can think of right now is to make a new table with your orderids and assign each an "order number" to specify the order in which they should appear. Then join on that table and sort by the order number.