我的 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/