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