gpt4 book ai didi

php - MySQL 首选项查找器

转载 作者:行者123 更新时间:2023-11-30 22:18:09 25 4
gpt4 key购买 nike

我在 MySQL 数据库中有一个很大的用户偏好列表。例如,

User 2 - Preference 1 - yes
User 3 - Preference 3 - no
User 2 - Preference 3 - no
User 6 - Preference 2 - yes
User 3 - Preference 1 - no

基本上,我正在尝试设计一个能够插入用户的查询,它会找到具有相似偏好的用户。例如,将“用户 2”插入到上面,它将返回“用户 3”,因为他们共享 #3 的无偏好。查询应该找到多个相似的用户并考虑所有偏好。

我如何使用 MySQL 和 PHP(如果需要)做类似的事情?任何帮助!

谢谢!

最佳答案

为了简单起见,我定义了一个简单的表,类似于您在问题中描述的内容,如下所示:

CREATE TABLE pref (
user integer not null,
pref integer not null,
value bool default false,
primary key (user, pref)
);

此外,我添加了以下示例数据:

INSERT INTO pref VALUES
(2, 1, true), (3, 3, false), (2, 3, false),
(6, 2, true), (3, 1, false);

“相似偏好”的主要思想是基于 self-join 的概念。 ,即将首选项数据库表与其自身连接起来。玩弄了一下,很快就来到了下面SELECT声明:

SELECT leftpref.user as leftuser, rightpref.user as rightuser, count(*) as score from pref leftpref 
INNER JOIN pref rightpref on leftpref.pref = rightpref.pref and leftpref.value = rightpref.value
WHERE leftpref.user <> rightpref.user
GROUP BY leftpref.user, rightpref.user
;

这将产生以下结果:

leftuser rightuser score
2 3 1
3 2 1

这正是我们所期望的:

  • 用户 2 与用户 3 共享一个偏好
  • 第二行是用户 3 与用户 2 共享偏好的对称语句。
  • 两个用户共享的偏好越多,得分越高

“插入用户”将是添加另一个 AND leftuser = <userid>到那个查询。

关于php - MySQL 首选项查找器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37530164/

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