gpt4 book ai didi

mysql - 仅使用 mysql 作为推荐系统

转载 作者:行者123 更新时间:2023-11-29 06:09:52 24 4
gpt4 key购买 nike

我正在尝试设置一个推荐系统,非常简单,但困难的部分是我只想使用非常有限的 PHP 的 SQL 查询,这是我极其蹩脚的尝试:

IF EXISTS( SET @UID=userid FROM tbl_users WHERE username = 'seang' 
THEN
BEGIN
UPDATE tbl_profile
SET refcount=refcount+1
WHERE userid = SELECT @UID
AND UPDATE tbl_profile SET referrer= SET @UID
END;
ENDIF;

显然这是非常错误的,但我仍然尝试过:/这是我想用英语做的。检查推荐新用户(seang 推荐他/她)的人的用户名是否存在,如果 seang 确实存在,我们会将他的推荐计数增加 1,并将新用户推荐人设置为 seang 的用户 ID。 seang 的用户名和用户 ID 存储在 tbl_users 中,他的推荐计数存储在 tbl_profile 中。 seang 的 userid 也在 tbl_profile 表中。

最佳答案

考虑到您可以使用简单的 UPDATE 语句来完成,对这种事情使用存储过程是一种过度杀戮:

UPDATE tbl_profile r, tbl_users u, tbl_profile p
SET p.refcount=p.refcount+1,
r.referrer=u.userid
WHERE r.referrer IS NULL
AND p.userid=u.userid
AND u.username=?
AND r.userid=?

? 是您用户名的占位符值,第二个占位符是被推荐用户的用户 ID。

这个查询说明了为什么严重依赖 SQL 来做事并不是一个好主意。当您尝试停留在 SQL 域中时,这会变得更加复杂。

请记住,没有理由为此使用“仅 SQL 查询”。应用层很重要,通常是执行某些操作(例如将用户名解析为 ID 值)的更好位置。

考虑:如果有一天您的用户和配置文件表存储在不同的数据库服务器上,大多数 ORM 将自动处理,但您的纯 SQL 代码将停止工作。

关于mysql - 仅使用 mysql 作为推荐系统,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38941085/

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