Mysql按顺序或序列排序
我有一个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
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))