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 rov
、group 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 之后。
我需要将一个 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 rov
、group 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 之后。