gpt4 book ai didi

php - 如何进行 SQL 查询以选择与某个字符串匹配的所有行,然后根据匹配数对它们进行加权

转载 作者:行者123 更新时间:2023-11-29 06:43:41 25 4
gpt4 key购买 nike

如何使用 LIKE 运算符创建一个匹配多个字符串的 SQL 查询,然后根据它获得的匹配项数生成 ORDERS 结果?

另外,有没有一种方法可以存储匹配的数量,以便我以后可以在 PHP 中使用该数字进行其他计算?

我目前正在使用来自另一个 Stack Overflow 答案的这段代码

SELECT searchtopics_topicid, searchtopics_content FROM searchtopics 
WHERE searchtopics_content
LIKE '%string1%' OR searchtopics_content
LIKE '%string2%' OR searchtopics_content
LIKE '%string3%'
ORDER BY
case when searchtopics_content LIKE '%string1%' then 1 else 0 end +
case when searchtopics_content LIKE '%string2%' then 1 else 0 end +
case when searchtopics_content LIKE '%string3%' then 1 else 0 end
DESC

最佳答案

上面的代码看起来应该可以正常工作,要存储您只需将 ORDER BY 案例逻辑添加到选择列表中的数字。

SELECT searchtopics_topicid
, searchtopics_content
, case when searchtopics_content LIKE '%string1%' then 1 else 0 end +
case when searchtopics_content LIKE '%string2%' then 1 else 0 end +
case when searchtopics_content LIKE '%string3%' then 1 else 0 end AS hit_ct
FROM searchtopics
WHERE searchtopics_content LIKE '%string1%'
OR searchtopics_content LIKE '%string2%'
OR searchtopics_content LIKE '%string3%'
ORDER BY
case when searchtopics_content LIKE '%string1%' then 1 else 0 end +
case when searchtopics_content LIKE '%string2%' then 1 else 0 end +
case when searchtopics_content LIKE '%string3%' then 1 else 0 end
DESC

在 MySQL 中你可以稍微简化这一切:

    SELECT searchtopics_topicid
, searchtopics_content
, searchtopics_content LIKE '%string1%'
+ searchtopics_content LIKE '%string2%'
+ searchtopics_content LIKE '%string3%' AS hit_ct
FROM searchtopics
WHERE searchtopics_content LIKE '%string1%'
+ searchtopics_content LIKE '%string2%'
+ searchtopics_content LIKE '%string3%' > 0
ORDER BY searchtopics_content LIKE '%string1%'
+ searchtopics_content LIKE '%string2%'
+ searchtopics_content LIKE '%string3%' DESC

关于php - 如何进行 SQL 查询以选择与某个字符串匹配的所有行,然后根据匹配数对它们进行加权,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19914901/

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