SQL 左加入 SUM

SQL left join with SUM

我需要将一个 table 与另一个加入,对于左侧 table 中的每种类型的组,我在第二个 table 中得到了该值类型的总和,其中 group_type = 4。 我试过以下:

SELECT *
FROM orbiting_group_types ogt
LEFT JOIN
(SELECT SUM(val)
 FROM report_orbiting_vals  rov
 ORDER by TYPE
 WHERE rov.orbiting_group_type_id = 4)
ON ogt.id = rov.orbiting_group_type_id

但是它给我一个错误 -

 syntax error at or near "WHERE"
LINE 8:  WHERE rov.orbiting_group_type_id = 4)

我错过了什么?

一般来说,order by子句必须在where子句之后。此外, order by 在子查询中没有意义 - 我怀疑你的意思是 group by 在这种情况下。

您没有为您的子查询设置别名,您的子查询也没有 select 您在主查询中加入的字段。正如其他人提到的,子查询中的 order by 将不起作用。

我怀疑您正在寻找以下结果:

SELECT *
FROM orbiting_group_types ogt
LEFT JOIN
(SELECT SUM(val), orbiting_group_type_id
 FROM report_orbiting_vals  rov
 WHERE rov.orbiting_group_type_id = 4
group by orbiting_group_type_id) as rov
ON ogt.id = rov.orbiting_group_type_id

注意 as rovgroup by、子查询 select 中的第二列并删除 order by

试试这个:

SELECT *
FROM orbiting_group_types ogt
LEFT JOIN
(SELECT SUM(val)
FROM report_orbiting_vals  subrov
WHERE subrov.orbiting_group_type_id = 4
//ORDER by TYPE
) rov
ON ogt.id = rov.orbiting_group_type_id

1) 你应该命名你的子查询来引用它们。您不能从子查询的外部到内部进行引用。

2) TYPE 听起来不像列名

3) ORDER BY 总是在 WHERE 之后。