选择内部数学函数

时间:2013-03-01 20:46:34

标签: mysql sql math

这很可能是SQL中的初学者问题。是否可以在数学表达式中使用选择?

例如,我有两个表: - 表A,其名称为id(主键),另一列名为val_A - 表B,其中一列名为id(主键),另一列名为val_B

我想做类似的事情:

select ((select val_A from A where id = 1) +
    (select val_B from B where id = 1)) as final_sum;

我正在使用MySQL并且它正在抛出错误。我假设这是因为select的结果是一个集合,我想要val_A和val_B的数值作为总和。

有没有办法做到这一点?

谢谢!

4 个答案:

答案 0 :(得分:4)

您拥有的查询:

select ((select val_A from A where id = 1) +
        (select val_B from B where id = 1)
       ) as final_sum

在MySQL中正确形成SQL(假设表和列存在)。

但是,它假定每个子查询只返回一行。如果没有,您可以使用limitmin()max()等函数强制执行此操作:

select ((select val_A from A where id = 1 limit 1) +
        (select max(val_B) from B where id = 1)
       ) as final_sum

或者,您可能尝试在两个表中获取id = 1的所有行的总和:

select ((select sum(val_A) from A where id = 1) +
        (select sum(val_B) from B where id = 1)
       ) as final_sum

答案 1 :(得分:2)

是的,你可以这样做,但更合适的查询格式是:

SELECT (a.val_a + b.val_b) as final_sum
FROM a INNER JOIN b ON a.id = b.id
WHERE a.id = 1

答案 2 :(得分:0)

我不确定为什么它不起作用,但你可以尝试类似的东西:

select (val_A + val_B) as final_sum from A,B where A.id=1 and B.id=1;

答案 3 :(得分:0)

分解并测试您的查询

选择1 + 1

所以你的陈述没有选择。这将运行 -

select ((select sum(val_A) from A where id = 1) +
(select sum(val_B) from B where id = 1)) as final_sum;