我有三个表A,B,C。它们的关系是A.id是B的外键,而B.id是C的外键。当B.id = C.id和A.id = B时,我需要对值求和。 id,我可以通过查询计算两次。但是现在我需要某种方法来一次计算总和!

我效率低下的解决方案

select count(C.id) from C,B where C.id = B.id;  //return the value X
select count(A.id) from C,B where A.id = B.id;  //return the value Y
select X + Y; // count the summation fo X and Y


我该如何优化? ks! :)

PS:

我的问题来自于GalaXQL,这是一个SQL交互式教程。我已经抽象了问题,更多详细信息可以查看第17.SELECT.GROUP BY ...有...

最佳答案

您可以在一个查询中执行这些操作。例如,如下所示:

select (select count(*) from C join B on C.id = B.id) +
       (select count(*) from C join A on C.id = A.id)


(您的第二个查询将不解析,因为A不是公认的表别名。)

无论如何,如果您正在学习SQL,则首先应该学习的是现代的join语法。您使用的隐式联接已过时15年,并且已成为ANSI标准的20多年了。了解正确的join语法。

关于mysql - 如何在一次SQL查询中计算两个计数函数的返回值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22558246/

10-11 02:58
查看更多