#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