我想使用多個條件過濾掉表中的數據,所以我使用以下查詢。根據條件數進行排序
SELECT * FROM `usersposts`
WHERE (LOWER(`content`) LIKE LOWER('%{$keywords}%')
OR LOWER(`fname`) = LOWER('{$keywords}')
OR LOWER(`title`) = LOWER('{$keywords}')) AND approval=1"
它按預期工作,但現在我需要根據該行滿足的條件數來對結果進行排序。例如,如果一行滿足所有或語句,那麼它應該在最上面,滿足的單一條件應該在最後。我怎樣才能做到這一點?
什麼我已經試過:
WHERE (LOWER(`content`) LIKE LOWER('%{$keywords}%')
OR LOWER(`fname`) = LOWER('{$keywords}')
OR LOWER(`title`) = LOWER('{$keywords}')) AND approval=1
ORDER BY
WHEN LOWER(`content`) LIKE LOWER('%{$keywords}%') AND LOWER(`fname`) = LOWER('{$location}') AND LOWER(`title`) = LOWER('{$keywords}') THEN 1
WHEN (LOWER(`content`) LIKE LOWER('%{$keywords}%') AND LOWER(`fname`) = LOWER('{$keywords}'))
OR (LOWER(`post_author_fname`) = LOWER('{$keywords}') AND LOWER(`title`) = LOWER('{$keywords}'))
OR (LOWER(`content`) LIKE LOWER('%{$keywords}%') AND LOWER(`title`) = LOWER('{$keywords}')) THEN 2
ELSE 3 END
ASC;
有沒有簡單的方法嗎?
這看起來很簡單:) –