我想使用多个条件过滤掉表中的数据,所以我使用以下查询。根据条件数进行排序
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;
有没有简单的方法吗?
这看起来很简单:) –