如何为 SELECT 语句中的每个 WHERE 子句实现得分

How to implement score points for each WHERE clause in SELECT statement

如何创建包含每个字段已通过多少条件的信息的列? 例如。我有客户找到 属性,最高价格为 500000,位于 3 楼,起居区在 45 米之间。现在,当我对每个条件使用“AND”时,我将获得 100% 兼容性的行。但是,如何才能找到与以前条件相同但范围内没有生活区的行。会有66%的相容度,因为我2/3的条件都通过了

有我的 sqlfiddle http://sqlfiddle.com/#!9/1ef60c/5

解决您的问题的简单方法是:

SELECT *,
        (
         CASE WHEN `property_max-price` < 550000 THEN 1 ELSE 0 END 
          + 
         CASE WHEN property_additional LIKE "%hot_water%" THEN 1 ELSE 0 END
          +
         CASE WHEN  `property_floor-from` >= 2 AND `property_floor-to` <=5 THEN 1 ELSE 0 END
        ) / 3 * 100 AS `%`
FROM client