Mysql 选择两个表并对列值求和
我需要对其中的4个表执行一次选择,并通过将表preds和exact中的奖励值相加来获得前5名分数: 我一直在想:Mysql 选择两个表并对列值求和,mysql,sql,sum,subquery,Mysql,Sql,Sum,Subquery,我需要对其中的4个表执行一次选择,并通过将表preds和exact中的奖励值相加来获得前5名分数: 我一直在想: SELECT ( select sum(preds.reward) FROM preds, matches, tbl_users WHERE ...some clauses... ) a, ( select sum(exact.reward) FROM exact, matches, tbl_users WHERE ...som
SELECT (
select sum(preds.reward) FROM preds, matches, tbl_users WHERE ...some clauses...
) a,
(
select sum(exact.reward) FROM exact, matches, tbl_users WHERE ...some clauses...
) b,
...here I need to sum(a+b) as total...,
tbl_users.userID
FROM
tbl_users
GROUP BY userID
ORDER BY total DESC LIMIT 5
如果您真的需要这些子查询而不是连接它们,那么您唯一的解决方案似乎是另一个子查询: 选择combined.a,combined.b,combined.a+combined.b作为sum,combined.userID 从…起 选择 从preds、matches、tbl_用户中选择sumpreds.raward,其中…一些子句。。。 A. 选择sumexact.reward FROM exact、matches、tbl_用户,其中…一些条款。。。 B tbl_users.userID userID 从…起 tbl_用户 按用户ID分组 按总描述限值5订购 合二为一
将内部查询返回的记录数量限制为5后,这不会对性能造成显著影响。如果您确实需要这些子查询而不是将它们连接起来,那么您唯一的解决方案似乎是另一个子查询: 选择combined.a,combined.b,combined.a+combined.b作为sum,combined.userID 从…起 选择 从preds、matches、tbl_用户中选择sumpreds.raward,其中…一些子句。。。 A. 选择sumexact.reward FROM exact、matches、tbl_用户,其中…一些条款。。。 B tbl_users.userID userID 从…起 tbl_用户 按用户ID分组 按总描述限值5订购 合二为一
将内部查询返回的记录数量限制为5后,这不会对性能造成显著影响我认为更典型的查询方法是:
SELECT u.uid,
((select sum(p.reward)
from preds p
where p.uid = u.uid
) +
(select sum(e.reward)
from exact e
where e.uid = u.uid
)
) total
from tbl_users u join
matches m
on . . .
where . . .
order by total desc
limit 5;
这限制了查询的复杂性。根据where子句的性质,使用相关子查询可以大大提高性能
注意:如果一个表或两个表中都缺少用户,则需要考虑子查询可能返回NULL。我认为更典型的查询方法是:
SELECT u.uid,
((select sum(p.reward)
from preds p
where p.uid = u.uid
) +
(select sum(e.reward)
from exact e
where e.uid = u.uid
)
) total
from tbl_users u join
matches m
on . . .
where . . .
order by total desc
limit 5;
这限制了查询的复杂性。根据where子句的性质,使用相关子查询可以大大提高性能
注意:如果一个表或两个表中都缺少用户,则需要考虑子查询可能返回NULL。实际上我不需要它们,我只需要求和。我该如何加入他们?这取决于你的桌子布局。但是,如果你只是在聚合,我的解决方案应该会起作用。实际上,我不需要它们,我只需要总和。我该如何加入他们?这取决于你的桌子布局。但是,如果您刚刚开始聚合,我的解决方案应该有效。您有问题吗?我建议你不要在FROM子句中使用逗号。你有什么问题吗?我建议你不要在FROM子句中使用逗号。我对你的代码做了一些调整,得到了我想要的结果。最后我还必须按用户ID分组。谢谢。我对你的代码做了一些调整,得到了我想要的结果。最后我还必须按用户ID分组。谢谢