比如我有个SQL语句如下:
SELECT `id`, `subject`FROM `glfr_article`
WHERE (1 = 1
AND `subject` LIKE '%电子商城%'
AND `subject` LIKE '%php%')
ORDER BY `point_num` DESC, `id` DESC`
现在的结果是 php 的结果很多,而且很靠前,我希望含有电子商城关键词的结果提前,该如何做呢?
回答
方法一:case then + like 给不同的关键词不同权重,对权重排序;
参考:https://blog.csdn.net/xingxin…
因为没有数据和表结构,无法测试,可能有部分语法或者其他错误。但主要思路和逻辑就是这样,如果有问题,你再修改一下使用
SELECT
id,
`SUBJECT`,
(
CASE
WHEN POSITION('电子商城' IN u.`user_name`) > 0
THEN '2'
WHEN POSITION('php' IN u.`user_name`) > 0
THEN '1'
END
) AS order_flag
FROM
`glfr_article`
WHERE (
1 = 1
AND `SUBJECT` LIKE '%电子商城%'
AND `SUBJECT` LIKE '%php%'
)
ORDER BY order_flag DESC,
`point_num` DESC,
`id` DESC