Order by Maximum condition match

前端 未结 4 628
名媛妹妹
名媛妹妹 2020-12-16 22:09

Please help me to create a select query which contains 10 \'where\' clause and the order should be like that: the results should be displayed in order of most keywords(where

4条回答
  •  一向
    一向 (楼主)
    2020-12-16 22:39

    SELECT *
      FROM (SELECT (CASE WHEN cond1 THEN 1 ELSE 0 END +
                    CASE WHEN cond2 THEN 1 ELSE 0 END +
                    CASE WHEN cond2 THEN 1 ELSE 0 END +
                    ...
                    CASE WHEN cond10 THEN 1 ELSE 0 END
                   ) AS numMatches,
                   other_columns...
              FROM mytable
           ) xxx
     WHERE numMatches > 0
     ORDER BY numMatches DESC
    

提交回复
热议问题