Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 选择内部数学函数_Mysql_Sql_Math - Fatal编程技术网

Mysql 选择内部数学函数

Mysql 选择内部数学函数,mysql,sql,math,Mysql,Sql,Math,这很可能是SQL中的初学者问题。是否可以在数学表达式中使用select 例如,我有两个表: -表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; select (val_A + val_B) as final_sum fr

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

例如,我有两个表: -表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;
select (val_A + val_B) as final_sum from A,B where A.id=1 and B.id=1;
我正在使用MySQL,它正在抛出错误。我假设这是因为select的结果是一个集合,我希望val_a和val_B的数值是总和

有没有办法做到这一点


谢谢

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

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

您拥有的查询:

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()
的函数强制执行:

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

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

我不确定它为什么不起作用,但您可以尝试以下方法:

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

分解并测试您的查询

选择1+1

因此,您的语句没有select。这将运行-

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

您的示例运行得很好:错误是什么,因为假设subselect每个只返回一行/字段,那么语法应该可以工作。。。这对我不起作用…:x“如果语法错误为
((选择val_A
,您确定在执行语句时在语句中包含前面的
select
。。虽然这可能是提问者想要的,但对于表之间存在重复项(这可能是问题的一部分)的情况,不清楚该怎么办。仅当A表和B表都有一行且只有一行id=1时,它才会运行。以下是当超过1@PradyutBhattacharya-虽然它现在将运行,但没有明确的证据表明OP希望它以这种方式运行。@PM77-1请在回答时说清楚。每个人都知道OP是“可能”寻找其他东西…我尝试使用MAX而不是sum,但两者都崩溃了…而且,我非常确定它只有一行,因为我直接指的是主键我尝试使用MAX来查看它是否有效,但它抛出了相同的错误…或者我在这里很愚蠢(并且没有看到明显的错误)或者这个版本的MySQL坏了…:/