2011-03-18 22 views
3

在MySQL中,我有SQL像MySQL的排序中選擇。在聲明中

select id from user where id IN (2, 3, 1); 

但MySQL的返回行作爲1,2,3,是否有可能強制MySQL返回相同的順序爲我原始訂單2,3,1?

謝謝。

+0

是購買你真正想要的,或者是在現實中的排序由另一列,這僅僅是一個簡單的例子? – 2011-03-18 15:41:35

回答

6

可以使用FIELD功能:

select id from user where id IN (2, 3, 1) ORDER BY FIELD(id, 2, 3, 1); 
+0

不錯。領域得到廣泛支持嗎?首先我聽說過它。 – 2011-03-18 15:40:45

+0

MS SQL方法,儘管不如此漂亮:http://stackoverflow.com/questions/3892406/what-is-the-ms-sql-server-capability-similar-to-the-mysql-field-function – squillman 2011-03-18 15:49:41

+0

我只是找到這個鏈接http://imthi.com/blog/programming/mysql-order-by-field-custom-field-sorting.php – 2011-03-18 16:00:42

0

,你也可以訂購通過LOCATE這樣的:

SELECT 
    `id` 
FROM 
    `user` 
WHERE 
    `id` IN(2, 3, 1) 
ORDER BY 
    LOCATE(`id`, "2 3 1") 

菲利克斯

1

對於便攜式代碼,使用CASE/WHEN。它受所有(主要)dbms支持。

order 
    by case when id = 2 then 1 
      when id = 3 then 2 
      when id = 1 then 3 
     end