2011-06-05 45 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