2015-07-03 79 views
2

我有動態列表的31165,31160,31321,31322,31199,31136這是動態的。sqlite查詢未分類結果

當我運行查詢

select id,name from master_movievod where id in(31165,31160,31321,31322,31199,31136); 

我得到以下結果

31136|Independence Day 
31160|Planet of the Apes 
31165|Mrs. Doubtfire 
31199|Moulin Rouge 
31321|Adult Movie 2 
31322|Adult Movie 3 

這是按升序排序列表。

我想以同樣的順序列表,我給作爲輸入像

31165|Mrs. Doubtfire 
31160|Planet of the Apes 
31321|Adult Movie 2 
31322|Adult Movie 3 
31199|Moulin Rouge 
31136|Independece Day 

回答

1

如果沒有order by條款,有一個數據庫,並將結果返回給你的順序沒有保證。不幸的是,SQLite沒有類似於MySQL的field用於自定義排序,但是您可以使用case表達式來執行某些操作:

SELECT id, name 
FROM  master_movievod 
WHERE id IN (31165, 31160, 31321, 31322, 31199, 31136) 
ORDER BY CASE ID WHEN 31165 THEN 0 
       WHEN 31160 THEN 1 
       WHEN 31321 THEN 2 
       WHEN 31322 THEN 3 
       WHEN 31199 THEN 4 
       WHEN 31136 THEN 5 
      END ASC 
1

不幸的是,SQLite沒有像MySQL的FIELD做一個自定義排序的選項。你剩下兩個選項。首先,您可以創建一個自定義表格,其中包含您想要的排序並將其用於排序。這個選項不是很有吸引力。第二個(容易)選項是使用ORDER BY CASE達到你想要的順序:

SELECT id, name FROM master_movievod 
WHERE id IN (31165,31160,31321,31322,31199,31136) 
ORDER BY 
    CASE id 
     WHEN 31165 THEN 0 
     WHEN 31160 THEN 1 
     WHEN 31321 THEN 2 
     WHEN 31322 THEN 3 
     WHEN 31199 THEN 4 
     WHEN 31136 THEN 5 
    END ASC