选择匹配项并按日期排序,然后选择相关性?

时间:2019-01-07 15:05:11

标签: mysql sql

我正在使用下面的内容从3列中进行选择,它可以正常工作,但是当我尝试按顺序添加日期时,我就搞不清楚了。它是一个mysql数据库。

    SELECT *,
          MATCH(artikel) AGAINST ("&soktexten&" IN BOOLEAN MODE)* 10 as rel1,
          MATCH(ingress) AGAINST ("&soktexten&" IN BOOLEAN MODE) as rel2,
          MATCH(texten) AGAINST ("&soktexten&" IN BOOLEAN MODE) as rel3
 FROM produkt
 WHERE MATCH (artikel, ingress, texten) AGAINST ("&soktexten&" IN BOOLEAN MODE)
 ORDER BY (rel1)+(rel2)+(rel3) DESC LIMIT 25;

我有3行,其中“ artikel”包含以下文本,然后是日期。

Row 1 - "Träbord" - "2019-01-01"
Row 2 - "Träbord aaa" - "2019-01-02"
Row 3 - "Träbord bbb" - "2019-01-03"

我希望它搜索“ artikel”中匹配单词的最新日期。

因此,如果我搜索“Träbordbbb”或“Träbordaaa”,则会将其显示在列表的顶部,但如果我仅搜索“Träbord”,则会将“Träbord”显示为其中的第一个列表,我希望它首先搜索最新日期,然后搜索匹配的单词。

那我该如何更改ORDER BY (rel1)+(rel2)+(rel3) DESC LIMIT 25,使其首先按日期排序,然后按匹配的单词排序?

我已经测试了ORDER BY (rel1)+(rel2)+(rel3), date DESC LIMIT 25等的几种变体,但我做对了。 非常感谢任何输入。

1 个答案:

答案 0 :(得分:0)

我认为这可以满足您的要求

ORDER BY (rel1 + rel2 + rel3) > 0 DESC,  -- put matches first
         date DESC