如何为 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
如何创建包含每个字段已通过多少条件的信息的列? 例如。我有客户找到 属性,最高价格为 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