在mysql

时间:2017-09-20 07:52:28

标签: php mysql

我想用像“爱我”之类的字符串进行搜索,我想要首先拥有此关键字行的结果

我试过

select *,(LENGTH(`Tags`) - LENGTH(REPLACE(`Tags`, '% love %', ''))) / LENGTH('% love %')+(LENGTH(`Tags`) - LENGTH(REPLACE(`Tags`, '% me %', ''))) / LENGTH('% me %') `occurences`
FROM `videos`
WHERE (Tags LIKE '% me %' OR 
Title LIKE '% me %' or Tags LIKE '% love %' or Title LIKE '% love %')
ORDER BY `occurences` DESC`

但它不起作用..

1 个答案:

答案 0 :(得分:0)

指定执行此操作的纯SQL查询真的很难,但由于您正在标记PHP,我希望您也可以在PHP中进行一些排序以使其更容易(除非您的数据集非常庞大)。

首先选择您的数据,然后将所有数据放入数组中,然后使用usort对数据库进行排序:http://php.net/manual/en/function.usort.php

或者如果您有一个大型数据集,那么您可以将问题拆分为首先只选择包含完全数学的任何内容:LIKE'%love me%&#39 ;,然后将其连接/加入匹配:LIKE '%爱情%'并不喜欢'%爱我%'等