Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/58.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql按顺序或序列排序_Mysql - Fatal编程技术网

Mysql按顺序或序列排序

Mysql按顺序或序列排序,mysql,Mysql,我有一个MYSQL查询: SELECT * FROM user WHERE name LIKE '%ana%' OR name LIKE '%adam%' OR name LIKE '%pit%' 是否有任何方法可以按结果或顺序排序 我的意思是显示名为的结果,如“%ana%”作为第一个 名称类似于“%adam%”作为第二个 将“%pit%”命名为第三个首先,在中为where子句使用(您没有通配符,因此这实际上更有效): 其次,使用find_in_set()进行排序: order by f

我有一个MYSQL查询:

SELECT * FROM  user WHERE name LIKE '%ana%' 
OR name LIKE '%adam%' 
OR name LIKE '%pit%'
是否有任何方法可以按结果或顺序排序

我的意思是显示名为
的结果,如“%ana%”
作为第一个 名称
类似于“%adam%”作为第二个

将“%pit%”命名为第三个

首先,在中为
where
子句使用
(您没有通配符,因此这实际上更有效):

其次,使用
find_in_set()
进行排序:

order by find_in_set(name, 'ana', 'adam', 'pit')

你可以这样做

order by if(name like 'ana', 1, if(name like 'adam', 2, 3))

我想你需要决定它是A)=,还是B)like我想这里唯一的想法是like使比较不区分大小写。这就是你的意思吗?它显然更优雅,但实际上也更高效吗?不像:>。。。也就是说,我在投票,因为它向社区展示了一些东西!看起来不错,可以将其用于修改后的查询SELECT*,从用户名为“%ana%”或名称为“%adam%”或名称为“%pit%”@Szmulik的用户处。不需要。在这种情况下,您需要显式的
大小写
来对行进行排序(或者使用辅助表)。@草莓。是的,总的来说。MySQL通过对常量进行排序,在
中使用常量列表优化
。好的,我承认这可能对三个项目没有任何影响,但一般来说,
中的
比通过
连接的等效
=
更有效。(据我所知,MySQL是唯一一个进行这种优化的数据库。)
order by if(name like 'ana', 1, if(name like 'adam', 2, 3))