Mysql 如何设置搜索值的优先级
我在设置数据库中搜索值的优先级时遇到问题。我想找到所有课程,其中有一个短语(或包含该短语的单词)的名称课程。 此外,与搜索短语名称完全相同的课程位于返回数据的第一位 课程的记录表格:Mysql 如何设置搜索值的优先级,mysql,sql,Mysql,Sql,我在设置数据库中搜索值的优先级时遇到问题。我想找到所有课程,其中有一个短语(或包含该短语的单词)的名称课程。 此外,与搜索短语名称完全相同的课程位于返回数据的第一位 课程的记录表格: +----+------+-------------------+ | id | code | name | +----+------+-------------------+ | 1 | JPA | JPA lorem ipsum | | 2 | JSF | Jsf lore
+----+------+-------------------+
| id | code | name |
+----+------+-------------------+
| 1 | JPA | JPA lorem ipsum |
| 2 | JSF | Jsf lorem ipsum |
| 3 | HIB | HIB lorem ipsum |
| 4 | TEB | TEB lorem ipsum |
| 5 | ZRN | Thanks in advance |
+----+------+-------------------+
我的问题是:
数据库返回:
+----+-----------------+
| id | name |
+----+-----------------+
| 1 | JPA Lorem ipsum |
| 2 | Jsf Lorem ipsum |
| 3 | HIB Lorem ipsum |
| 4 | TEB lorem ipsum |
+----+-----------------+
我希望收到:
+----+-----------------+
| id | name |
+----+-----------------+
| 4 | TEB lorem ipsum |
| 1 | JPA Lorem ipsum |
| 2 | Jsf Lorem ipsum |
| 3 | HIB Lorem ipsum |
+----+-----------------+
具有4id的记录是最匹配的,并且在返回的数据中位于第一位。问题,我怎么做
提前谢谢 这可能会奏效
SELECT `course`.`id`, `course`.`name`
FROM `course`
WHERE `name` LIKE 'TEB lorem ipsum' or
`name` LIKE '%TEB%' or
`name` LIKE '%lorem%' or
`name` LIKE '%ipsum%'
ORDER BY CASE WHEN `name`='TEB lorem ipsum' THEN 1 ELSE 2 END ASC
简而言之,它检查name是否等于value,并给它一个1,否则给它一个2。然后它按升序排列。我认为一个简单的IF应该能起作用,不是吗<代码>IF(名称='TEB lorem ipsum',1,2)非常感谢大家!第一个和第二个解决方案是好的,它的工作!谢谢
SELECT `course`.`id`, `course`.`name`
FROM `course`
WHERE `name` LIKE 'TEB lorem ipsum' or
`name` LIKE '%TEB%' or
`name` LIKE '%lorem%' or
`name` LIKE '%ipsum%'
ORDER BY CASE WHEN `name`='TEB lorem ipsum' THEN 1 ELSE 2 END ASC