Ram*_*min 0 mysql sql select nested-queries
我有一个SELECT查询,它应该有SELECT来自同一个表的几个嵌套查询,但是不同的WHERE子句来生成新列.
问题是每个单一形式的子查询运行良好,但当它们变成子查询时,MySql会抛出一个ERROR.
这是我的SQL:
SELECT user,
(SELECT SUM(amount) from my_table WHERE type='form1' group by user) as form1,
(SELECT SUM(amount) from my_table WHERE type='form2' group by user) as form2,
(SELECT SUM(amount) from my_table WHERE type='form3' group by user) as form3,
(SELECT SUM(amount) from my_table WHERE type='form4' group by user) as form4,
(SELECT SUM(amount) from my_table WHERE type='form5' group by user) as form5,
(SELECT SUM(amount) from my_table WHERE type='form6' group by user) as form6
from my_table group by user;
Run Code Online (Sandbox Code Playgroud)
我希望Query生成这种结构:
user | form1 | form2 | form3 | form4 | form5 | form6
| | | | | |
Run Code Online (Sandbox Code Playgroud)
我该如何编辑这个SQL?
你想要条件聚合:
select user,
sum(case when type = 'form1' then amount end) as form1,
sum(case when type = 'form2' then amount end) as form2,
sum(case when type = 'form3' then amount end) as form3,
sum(case when type = 'form4' then amount end) as form4,
sum(case when type = 'form5' then amount end) as form5,
sum(case when type = 'form6' then amount end) as form6
from my_table
group by user;
Run Code Online (Sandbox Code Playgroud)
您的错误至少发生,因为子查询返回多行.将group by在子查询几乎意味着他们将返回多行的每个用户.