ПОРЯДОК MySQL ПО РЕГИСТРУ оператор

#mysql #sql-order-by #case

#mysql #sql-порядок-по #регистр

Вопрос:

Я пытаюсь выполнить поиск, который был бы отсортирован по релевантности. Допустим, поисковый запрос содержит 3 слова: A, B и C. Что я пытаюсь сделать, так это проверить, присутствует ли поисковый запрос в результате выбора, и если да, то это повысит его ранг.

 ORDER BY CASE
(
WHEN search_word_A_is_present THEN  1
WHEN search_word_B_is_present THEN  1
WHEN search_word_C_is_present THEN  1
ELSE 0
END
) 
DESC
  

Хотя синтаксической ошибки нет, и поиск выполняется и сортируется по чему-то (что кажется отличным от того, что я хочу), но я не уверен, что суммируется, если что-нибудь. Как бы мне посмотреть, каков конечный ранг (сумма) в конце для каждого результата? Это правильный способ сделать это?

Ответ №1:

Поскольку в MySQL логические условия приводят к 1 и 0 , вы можете просто сложить их

 ORDER BY search_word_A_is_present   search_word_B_is_present   search_word_C_is_present 
DESC
  

Более практичный пример:

 ORDER BY col1 = 1   col2 = 'A'   col3 = 44 DESC