gpt4 book ai didi

mysql - 按字段内出现的频率排序

转载 作者:行者123 更新时间:2023-11-30 01:32:02 26 4
gpt4 key购买 nike

MySQL 有没有一种方法可以根据单个字段中出现的次数进行排序?

获取以下数据:

id, value
1, 'Bob'
2, 'Bob Bob Bob'
3, 'Bob Bob Bob Bob'
4, 'Bob Bob'

如果我查询:

SELECT id from table where value like '%Bob%'

结果将是 1,2,3,4,因为它们都包含 Bob

我希望它根据 Bob 在每个值中出现的次数进行排序,因此我希望 3,2,4,1 作为响应,因为 Bob 在 3 中出现最频繁,在 1 中出现最少。

SELECT id from table where value like '%Bob%' order by frequency_score

如何计算Frequency_score?

最佳答案

一个想法可能是这样的:

SELECT   *
FROM yourtable
WHERE value LIKE '%Bob%'
ORDER BY LENGTH(value) - LENGTH(REPLACE(value, 'Bob', '')) DESC

请注意,此查询不会匹配整个单词,只会匹配子字符串。如果您需要匹配整个单词,您可以使用如下内容:

SELECT   *
FROM yourtable
WHERE value REGEXP '[[:<:]]Bob[[:>:]]'
ORDER BY
LENGTH(value) -
LENGTH(REPLACE(CONCAT(' ', REPLACE(value, ' ', ' '), ' '), ' Bob ', '')) DESC

关于mysql - 按字段内出现的频率排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17331440/

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