我正在使用下面的内容从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
等的几种变体,但我做对了。
非常感谢任何输入。
答案 0 :(得分:0)
我认为这可以满足您的要求
ORDER BY (rel1 + rel2 + rel3) > 0 DESC, -- put matches first
date DESC