我有以下查询。它选择标题中包含绿色,蓝色或红色字样的所有帖子。
SELECT id,title FROM post WHERE title REGEXP'(green | blue | red)'
我想以这样一种方式对结果进行排序,即首先列出具有最多匹配(所有三个单词)的标题,因此是最相关的标题。在这种情况下这是否可能,如果是这样,我将如何继续呢?
由于
答案 0 :(得分:0)
您必须拆分正则表达式。不同的条件或不同的查询:
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
,因为根据您的示例,当您分割不再需要它的条件时。 LIKE
比正则表达式快一点,但如果您的模式更复杂,那么您可以随时将其替换回来。