mysql 的匹配百分比

matching percentage with mysql

我一直在尝试使用 MySQL 创建一个算法,该算法 returns 匹配报价的用户列表和匹配百分比。如果用户符合优惠的基本主要标准,他们将获得 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 匹配任何条件的用户,然后我使用子查询生成分数。 (SELECT gender = "m") 类型的子查询如果为真(即:如果性别为 m),将导致 1。然后我将其乘以 2 以获得首选分数“2”。如果性别不匹配 'm',结果将为 0。和 0 * 2 = 0。我从 68 分开始,因为你提到如果任何字段匹配,起始分数为 70。因为此结果中的所有行都将至少匹配其中一个,所以我减去 2.

在 MySQL 中,您可以使用 SELECT 而无需定义 table 到 select 的来源。查询 SELECT 1+1 将产生 2。当您将这些用作子查询时,您可以使用结果中的字段来实现各种技巧。我用它们为我的分数结果生成了 1 或 0。