我想通过搜索查询在 title 和 text 字段中的表中进行搜索,匹配次数最多的行将获胜。 我的表页面看起来像这样:
------------------------------------------
| id | title | text | status |
------------------------------------------
| 1 | test test | test xx | 200 |
| 2 | nothing | nothing | 200 |
| 3 | test test | test test | 200 |
| 4 | abcefgh | ijkl test | 200 |
| 5 | test | test abc | 200 |
------------------------------------------
预期结果如下所示(通过搜索查询 test 选择 id ,标题,文本),限制3):
---------------------------------
| id | title | text |
---------------------------------
| 3 | test test | test test |
| 1 | test test | test xx |
| 5 | test | test abc |
---------------------------------
非常感谢您的帮助,因为我现在找不到更长时间的解决方案。预先感谢!
答案 0 :(得分:1)
您可以这样做:
select
id, title, text
from t
order by
round(length(title) - length(replace(title, "test", "")) / length("test") +
round(length(text) - length(replace(text, "test", "")) / length("test")
desc
limit 3