2011-06-05 65 views
2

說我有類似表:具體順序SQL命令

ID Name 
1  Test 
2  Contest 
3  Fittest 
4  Testament 

是否有一個MySQL查詢我可以訂購,使其能夠先顯示一個特定的單詞使用?

例如,用戶正在搜索單詞「測試」。我有一個類似於「SELECT * FROM table WHERE NAME LIKE'%Test%'」的語句。我是否可以顯示結果以顯示START和Test開始後的所有內容,而所有內容仍按字母順序排列。

所以輸出將是:

Test 
Testament 
Contested 
Fittest 

感謝。

回答

7

這將會把你的話,隨着測試開始在頂部,而那些話加上按字母順序列表的其餘部分進行排序..

SELECT * FROM mytable 
ORDER BY CASE WHEN name LIKE 'test%' THEN 0 ELSE 1 END ASC, name ASC 
+0

這完美的作品。謝謝。 – pyius 2011-06-05 15:14:34

+0

+1。我忘了最後一部分;) – 2011-06-05 15:18:27

3
SELECT * FROM table 
WHERE NAME LIKE '%Test%' 
order by case when name like 'test%' then 0 else 1 end 
+0

這似乎對於第一部分的工作,把「測試%」放在第一位,但不是所有的都是按字母順序的。 示例,輸出類似於: 測試 約 適者生存 有爭議 – pyius 2011-06-05 15:10:18