mysql - 基于 mysql 相关性的排名结果

标签 mysql sorting

我的 table 是这样的

id, name
 1, ccc hij
 2, bbb
 3, hsd

现在,如果我查询 SELECT id, name FROM tbl WHERE name LIKE 'h%' OR '% h%';

它给我这个作为输出

id, name
1, ccc hij
3, hsd

这是正确的,但顺序不正确。我什至不能 ORDER BY name 因为 ccc hij 无论如何都会在自然排序中排在首位。

要在顶部显示从用户关键字开始并在底部显示通配符匹配的项,我必须选择什么选项?

更新:

考虑以下输入

1   ccc hij
2   hsd
3   hdb
4   haa

和建议的 order by (name LIKE 'h%') DESC。我得到以下输出

2   hsd
3   hdb
4   haa
1   ccc hij

是否可以按字母顺序对 'h%' 匹配项进行排序?

最佳答案

MySQL 有一个巧妙的功能,当 bool 值被视为数字时,它会被转换为 1 和 0。因此,处理此要求的一种方法是根据列是否匹配通配符进行排序:

SELECT   id, name 
FROM     tbl 
WHERE    name LIKE 'h%' OR name LIKE '% h%'
ORDER BY (name LIKE 'h%') DESC

关于mysql - 基于 mysql 相关性的排名结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25737520/

相关文章:

mysql - 存储缓存数据 - 多少格式化?

mysql - 如何在jsp中插入外键

php - 在 Web 服务器上执行()错误,但在本地服务器上没有错误

php - PHP Edit无法正常工作

Javascript Case Insensitive Sort objects containing undefined 作为值

Python:排序函数在存在 nan 时中断

mysql - sql查询从多个表中选择数据

java - 为什么java.lang.Number不实现Comparable?

正则表达式:查找包含两个或更多字母的每个字符串

android - 在 Android 中对 Cursor 进行排序以在 SimpleCursorAdapter 中使用