外部联接后的复合mysql选择

外部联接后的复合mysql选择,mysql,sql,join,left-join,outer-join,Mysql,Sql,Join,Left Join,Outer Join,我有一个带列(a,b)的表a和一个带列(b,c)的表b。我想做以下工作: STEP 1: do a A LEFT OUTER JOIN B ON A.b = B.b STEP 2: convert all c = NULL in the Joined table to c = <default_value> STEP 3: SUM(A.a * B.c) over the table I get after STEP 2 步骤1:在a.B=B.B上进行左外连接B 步骤2:将联接表

我有一个带列(a,b)的表a和一个带列(b,c)的表b。我想做以下工作:

STEP 1: do a   A LEFT OUTER JOIN B ON A.b = B.b
STEP 2: convert all c = NULL in the Joined table to c = <default_value>
STEP 3: SUM(A.a * B.c) over the table I get after STEP 2
步骤1:在a.B=B.B上进行左外连接B
步骤2:将联接表中的所有c=NULL转换为c=
第三步:在第二步之后得到的表格上求和(A.A*B.c)
有没有一种快速的方法可以在一个复合语句中实现这一点


谢谢

您可以在一个查询中执行三个步骤,首先
左外连接
,使用
IFNULL
NULL
值设置为默认值,然后使用
SUM

SELECT
  SUM(A.a + IFNULL(B.c, <default_value>))
FROM A 
LEFT OUTER JOIN B ON A.b = B.b;
选择
求和(A.A+IFNULL(B.c.)
从
A.B上的左外连接B=B.B;
SQL Fiddle演示:


您可以在一个查询中执行三个步骤,首先
左外连接
,使用
IFNULL
NULL
值设置为默认值,然后使用
SUM

SELECT
  SUM(A.a + IFNULL(B.c, <default_value>))
FROM A 
LEFT OUTER JOIN B ON A.b = B.b;
选择
求和(A.A+IFNULL(B.c.)
从
A.B上的左外连接B=B.B;
SQL Fiddle演示:

选择sum(A.A*(B.c=null的情况下,则B.c结束))作为连接的sum
从左外连接B开始(A.B=B.B);
选择sum(A.A*(B.c=null的情况下,则B.c结束))作为联接的sum
从左外连接B开始(A.B=B.B);
 select sum(A.a * (case when B.c = null then <default> else B.c end)) as joined_sum
 from A left outer join B on (A.b = B.b);