Выберите с соответствием и заказ по дате, а затем актуальность? - PullRequest
0 голосов
/ 07 января 2019

Я использую ниже, чтобы выбрать из 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äbord bbb» или «Träbord aaa», он показывает их в верхней части списка, как они должны, но если я ищу только «Träbord», он показывает «Träbord» в качестве первого в список, и я хочу, чтобы он сначала искал самую последнюю дату, затем соответствующее слово.

Так как мне изменить ORDER BY (rel1)+(rel2)+(rel3) DESC LIMIT 25, чтобы он сначала упорядочивался по дате, а затем по соответствующему слову?

Я тестировал несколько вариантов ORDER BY (rel1)+(rel2)+(rel3), date DESC LIMIT 25 и т. Д., Но я не могу понять это правильно. Любой вклад очень ценится, спасибо.

1 Ответ

0 голосов
/ 07 января 2019

Я думаю, что это то, что вы хотите:

ORDER BY (rel1 + rel2 + rel3) > 0 DESC,  -- put matches first
         date DESC 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...