我正在尝试创建一个SQL语句,它基本上会因各种条件而计算点数。例如,我有表:用户,粉丝,图片
关注者和图片有一个user_id,用户有一个名为“about”的列
我想做一些选择,我得到的总和:
1)如果users.about不为空,则值得100分
2)如果用户拥有至少一张pictures.type =“something”,那就值50分
3)对于与该用户相关联的每个关注者,每次提供20分
所以这个SQL语句应该选择这三个计算的总和。之后,我想使用此SQL创建一个基本上列出user_id及其相关分数的视图。
我尝试了各种排列但没有任何效果。我该怎么做?谢谢!
答案 0 :(得分:0)
这是一种方式:
SELECT sum(points) FROM (
SELECT 100 points FROM users WHERE about <> '' AND user_id = ####
UNION
SELECT 50 points FROM users WHERE EXISTS (SELECT * FROM pictures WHERE user_id = ####)
UNION
SELECT 20 points FROM followers WHERE user_id = ####
)
这是第二种方式:
SELECT IF(about <> '', 100, 0)
+ IF(EXISTS (SELECT * FROM pictures WHERE pictures.user_id = users.user_id), 50, 0)
+ (SELECT SUM(20) FROM followers WHERE followers.user_id = users.user_id) points
FROM users
WHERE user_id = ####