2015-11-10 170 views
0

我有一个表,我试图在name排序顺序

select * from table where name like '%apple%m%' 
+-------+-------------------------------+------------------------+ 
| id |    name    |   cat   | 
+-------+-------------------------------+------------------------+ 
| 2757 | Apple MacBook     | Laptops & Accessories | 
| 2777 | Apple Bottom Tops    | Western Wear   | 
| 2752 | Apple Monitors    | Desktop Components  | 
| 2756 | Apple Desktop & Monitors  | Desktops & Accessories | 
| 2778 | Apple Bottom Tunics   | Tops     | 
| 2776 | Apple Selector & Smart Box | Video & TV Accessories | 
| 2787 | Apple Pie Pyjamas    | Girl Clothes   | 
| 2773 | Apple Selector & Smart Box | TV & Video Accessories | 
| 2780 | Apple Fun Card Games   | Toys     | 
| 38304 | Snapple Mixer juicer grinders | Kitchen Appliances  | 
+-------+-------------------------------+------------------------+ 

我想这与开始显示值进行排序“过滤器“苹果M”值苹果”和‘m’象下面这样:

+------+--------------------------+------------------------+ 
| id |   name   |   cat   | 
+------+--------------------------+------------------------+ 
| 2757 | Apple MacBook   | Laptops & Accessories | 
| 2752 | Apple Monitors   | Desktop Components  | 
| 2756 | Apple Desktop & Monitors | Desktops & Accessories | 
|  | ---Rest all after this-- |      | 
+------+--------------------------+------------------------+ 
+0

为什么在Apple Monitors之后有'Apple Desktop'? 'D'在'M'之前。 – Barmar

回答

1

用途:

name LIKE 'Apple%m%'1时的名字,当没有模式,0匹配,所以这会先排列匹配的名字。然后它将按照每个组中的名称排序。

0

我认为你可以使用一些简单的像下面这样:

SELECT * FROM your_table WHERE name LIKE 'apple% m%' ORDER BY name; 

上述查询首先将获得与名称由'apple '开始行,然后将查询结果排序。

如果您需要区分大小写,那么你可以使用:

SELECT * FROM your_table WHERE name LIKE 'Apple% m%' COLLATE utf8_bin ORDER BY name; 

Case sensitivity in like

+0

嗨科斯塔斯,如果我做的命令由上名字它会列出“苹果底部上衣”和“苹果底部长袍”第一 – Manoj

+0

哦,在你预期的结果,你有苹果台式机和显示器,从而为这个原因,我还以为你想要那个。 –

+0

你的意思是你只想要一个单词是'Apple'而另一个单词是以'm'开头的结果? –