SQL:每行的用户变量增量

时间:2013-09-02 09:51:50

标签: mysql sql variables case increment

编辑:我的问题不明确,所以我在这里重新制定了它:Order sql result by occurrence of a set of keywords in a string

我正在改进我的网站搜索系统。我正在尝试在sql请求中使用和增加变量,就像那样......

SET @titlematch = 0;
SELECT *,
CASE 
    when title like '%apple%' then (SET @titlematch = @titlematch+1)
    when title like '%orange%' then (SET @titlematch = @titlematch+1)
    when title like '%other_keyword_searched%' then (SET @titlematch = @titlematch+1)
    (...)
END,
(...)
FROM pages  
(...)
ORDER by @titlematch desc

事实上,每当关键字出现在标题中时,标题匹配就会增加。如果标题中有“apple”和“orange”,则titlematch应等于2。 但实际上,它不起作用......

(对不起我的英文)

2 个答案:

答案 0 :(得分:0)

我认为它失败了,因为它必须处理所有数据,如果像someWordYouDontAcccount这样的标题会失败。你必须考虑所有可能的情况或使用其他。

答案 1 :(得分:0)

在回复您的评论时(是的,总是),我以这种方式重写您的查询:

SELECT *, (select count(*) from pages p2 where p1.field_date < p2.field_date) as pos
(...)
FROM pages p1
(...)
ORDER by (select count(*) from pages p2 where p1.field_date < p2.field_date) desc

通过这种方式,您可以在实际之前计算每一行(我基于ipotetic field_date,但如果您希望可以更改条件),那么每行都有一个增量值,最后,我添加这个按条款顺序排列。

告诉我它是否正常