这很可能是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的数值作为总和。
有没有办法做到这一点?
谢谢!
答案 0 :(得分:4)
您拥有的查询:
select ((select val_A from A where id = 1) +
(select val_B from B where id = 1)
) as final_sum
在MySQL中正确形成SQL(假设表和列存在)。
但是,它假定每个子查询只返回一行。如果没有,您可以使用limit
或min()
或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;