与mysql匹配百分比 说明

问题描述

我一直在尝试使用 MysqL 创建一个算法,该算法返回匹配报价和匹配百分比的用户列表。如果用户符合报价的基本主要标准,他们将获得 70% 作为开始,如果他们符合某些次要标准,则匹配百分比加起来为 2%。

我还是不知道怎么做,如果你有任何想法,请赐教。提前致谢

 1. | User    | | Offer    |
 2. |:--------| |:---------|
 3. | city    | | city-lis |
 4. | age     | | age-min  |
 5. | gender  | | gender   |

列表项

如果这些标准满足那些用户应该得到 70% 作为匹配百分比,而不是如果他们满足其他标准,百分比上升

解决方法

根据我从你的问题中推断出的,这段伪代码可能会有所帮助:

SELECT username,68 +
  ((SELECT city = "example")*2) +
  ((SELECT gender = "m")*2) +
  ((SELECT age > 21)*2) AS score
FROM users
WHERE city = "example" OR gender="m" OR age > 21;

说明

我首先选择符合任何条件的用户,然后使用子查询生成分数。 (SELECT gender = "m") 类型的子查询如果为真(即:如果性别为 m)将导致 1。然后我将其乘以 2 以获得“2”的首选分数。如果性别与“m”不匹配,则结果将为 0。还有0 * 2 = 0。我以 68 分开始,因为您提到如果有任何字段匹配,则起始分数为 70。因为此结果中的所有行都将至少匹配其中之一,所以我减去了 2。

在 MySQL 中,您可以使用 SELECT 而无需定义要从中进行选择的表。查询 SELECT 1+1 将产生 2。当您将这些用作子查询时,您可以将结果中的字段用于各种技巧。我用它们为我的分数结果生成 1 或 0。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...