gpt4 book ai didi

带有 'flexible' WHERE 子句和 % 匹配的 Mysql 请求

转载 作者:行者123 更新时间:2023-11-29 01:38:31 25 4
gpt4 key购买 nike

我在 Mysql 数据库上工作,我正在尝试使用“灵活”的 WHERE 条件运行查询,以在末尾获得与我的原始查询匹配的百分比。让我用一个例子解释得更清楚:

  • 假设我有一张用户表,其中包含 5 种不同的技能,包括 ID、名称、用户组、技能 1、技能 2、技能 3、技能 4、技能 5。列 skill[N] 表示技能水平,范围从 1 到 3。

  • 例如,如果我想从某个用户组中搜索 skill2 为 3 级、skill4 为 1 级和 skill5 为 1 级的用户,我将运行:

    SELECT * 
    FROM users
    WHERE usergroup = 10
    AND skill2 = 3
    AND skill4 = 1
    AND skill5 = 1
  • 但我想要的是返回更多符合这些严格条件的行,并与我的原始查询“% 匹配”。

  • 例如,如果某行仅匹配前 2 项技能标准,这将返回“匹配变量”为 66% 匹配的行(假设所有技能的权重相同)。如果符合 3 个技能标准,则为 100%。

请求必须返回末尾按“匹配”DESC 排序的行。

你知道怎么做吗?

谢谢!

帕加内尔

最佳答案

您可以通过过滤最低接受标准、计算一致性分数并按分数排序来实现。请注意“匹配”是一个 MySQL 关键字;如果你想将它指定为列名,那么你需要引用它。结果可能是这样的

SELECT *,
CAST((case skill2 when 3 then 1 else 0 end)
+ (case skill4 when 1 then 1 else 0 end)
+ (case skill5 when 1 then 1 else 0 end) AS FLOAT) / 3.0 AS "match"
FROM users
WHERE usergroup = 10 AND (skill2 = 3 OR skill4 = 1 OR skill5 = 1)
ORDER BY "match" DESC

关于带有 'flexible' WHERE 子句和 % 匹配的 Mysql 请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32593497/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com