按一组关键字的出现对sql结果进行排序

按一组关键字的出现对sql结果进行排序,第1张

按一组关键字的出现对sql结果进行排序

关于MySQL的美好之处,取决于您的观点。它以认为您希望对其进行处理的方式对待数据。

1 +'1'
?很明显,您想将字符串当作数字对待,因此它很高兴为您执行加法。

也适用于布尔 *** 作数(只需要注意运算符的优先级)。

(a like '%foo%') + (a like'%bar%')
识别数字上下文,将布尔结果
true
视为
1
和布尔结果
false
视为
0
-本质上是为您计算关键字匹配项。

你怎么用呢?把你的

where
条款,替换所有
or
+
,并确保每个单独
like
的语句被包裹在括号,然后
order by
它。

例如:

order by (concat(title, description) like '%keyword1%')   + (concat(title, description) like '%keyword2%') desc

您可以使用来完成类似的 *** 作

fulltext index
,但是权重可能有些奇怪。语法如下:

create fulltext index idx on search_table(title, description)

^^只需做一次。

select *  from search_table  where match(title, description) against ('keyword1 keyword2 ...')  order by match(title, description) against ('keyword1 keyword2 ...') desc

这具有极大的好处,那就是构造查询的烦恼要少得多。

这是为您演示两种方法的概念证明。(尽管仅针对单个列-
但却能说明要点)



欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5106405.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-11-17
下一篇 2022-11-17

发表评论

登录后才能评论

评论列表(0条)

保存