gpt4 book ai didi

MySQL:返回多个匹配项

转载 作者:行者123 更新时间:2023-11-29 00:29:10 27 4
gpt4 key购买 nike

我正在用 PHP 和 MySQL 构建一个搜索系统,有人要求我提供一些有趣的东西。所以,假设我有一个假设表 results(顺便说一句,在我的系统中,它是一个 View )...

id    text
1 "foo"
2 "foo bar"
3 "foo man choo"
4 "bar choo"

...和一个非常易于理解的SELECT查询:

SELECT r.id, r.text
FROM results AS r
WHERE r.text REGEXP 'foo|bar|choo'
AND r.text NOT REGEXP 'man'

有没有这样一种方法,即使它意味着用 LIKE 交换 REGEXP,我也可以返回,与此文本一起返回一个返回匹配数的整数列在每一行的 text 中,所以我可以按相关性/匹配数对这个查询进行排序,所以结果表看起来像这样?:

id    text          matches
2 "foo bar" 2
4 "bar choo" 2
1 "foo" 1

最佳答案

您可以通过将这些值相加来做到这一点:

SELECT r.id, 
r.text,
((r.text REGEXP 'foo') +
(r.text REGEXP 'bar') +
(r.text REGEXP 'choo')
) as matches
FROM results AS r
WHERE r.text REGEXP 'foo|bar|choo'
AND r.text NOT REGEXP 'man'

比较(在 MySQL 中)计算为 0(假)或 1,您可以将它们相加。

关于MySQL:返回多个匹配项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17428726/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com