按regexp匹配数排序mysql结果

按regexp匹配数排序mysql结果,mysql,regex,Mysql,Regex,我有以下疑问。它选择标题包含绿色、蓝色或红色的所有帖子 从标题REGEXP'(绿色|蓝色|红色)所在的帖子中选择id、标题 我想以这样一种方式对结果进行排序:首先列出匹配最多(所有三个词)的标题,从而列出最相关的标题。在这种情况下,这可能吗?如果可能,我将如何继续 谢谢您必须拆分正则表达式。针对不同的条件或不同的查询: SELECT COUNT(results.username) as count, results.* FROM ( SELECT * FROM `post` WHERE

我有以下疑问。它选择标题包含绿色、蓝色或红色的所有帖子

从标题REGEXP'(绿色|蓝色|红色)所在的帖子中选择id、标题

我想以这样一种方式对结果进行排序:首先列出匹配最多(所有三个词)的标题,从而列出最相关的标题。在这种情况下,这可能吗?如果可能,我将如何继续


谢谢

您必须拆分正则表达式。针对不同的条件或不同的查询:

SELECT COUNT(results.username) as count, results.* FROM (
    SELECT * FROM `post` WHERE `title` LIKE "%blue%"
    UNION SELECT * FROM `post` WHERE `title` LIKE "%red%"
    UNION SELECT * FROM `post` WHERE `title` LIKE "%green%"
) as results GROUP BY results.title ORDER BY count DESC;

注意:我使用了
LIKE
而不是
REGEXP
,因为当您分割条件时,根据您的示例,您将不再需要它<代码>如比正则表达式快一点,但如果您的模式更复杂,那么您可以随时将其替换回来。

按字段(颜色、'绿色'、'蓝色'、'红色')从PostOrder中选择id、标题。
如中所述,您最好使用全文。