无法得到mysql子查询

pre*_*rob 4 mysql sql subquery mysql-error-1242

我无法在Mysql中查询子查询.相当简单的是好的,我发现的大多数教程很少超出典型:

SELECT * FROM t1 WHERE column1 = (SELECT column1 FROM t2);
Run Code Online (Sandbox Code Playgroud)

我想从我的数据库中取出的是以下内容(我会尽力解释这个没有我们数据库的任何背景):

检索属于特定代表的客户列表和上个月(在一列中)花费的总金额以及在其他列中的当月支出金额.

结果,这看起来大致如下:

ID | NAME   | PREV MONTH | CUR MONTH
1  | foobar | £2300      | £1200
2  | barfoo | £1240      | £500
Run Code Online (Sandbox Code Playgroud)

查询我用来获取数据的第一部分如下:

SELECT c.id,c.name, SUM(co.invoicetotal) as total
FROM customers as c
JOIN customerorders as co on co.customer_id = c.id
WHERE c.salesrep_id = 24
AND co.orderdate BETWEEN DATE_SUB(CURDATE(), INTERVAL 30 DAY) AND CURDATE()
GROUP by c.id
order by total desc
Run Code Online (Sandbox Code Playgroud)

DATE_SUB可以被实际日期替换,因为php变量最终会在这里.作为一个例子,这只是给我有效的数据.

这给了我,例如:

ID | NAME   | TOTAL 
1  | foobar | £2300      
2  | barfoo | £1240   
Run Code Online (Sandbox Code Playgroud)

因此,理想情况下,我的子查询将是完全相同的查询,但更改日期.我一直收到#1242 - Subquery returns more than 1 row 错误.

有什么建议或建议吗?

提前致谢.抢

Qua*_*noi 5

SELECT  c.id, c.name,
        (
        SELECT  SUM(co.invoicetotal)
        FROM    customerorders co
        WHERE   co.customer_id = c.id
                AND co.orderdate BETWEEN DATE_SUB(CURDATE(), INTERVAL 30 DAY) AND CURDATE()
        ) AS prev_month,
        (
        SELECT  SUM(co.invoicetotal)
        FROM    customerorders co
        WHERE   co.customer_id = c.id
                AND co.orderdate BETWEEN CURDATE() AND CURDATE() + INTERVAL 1 MONTHS
        ) AS cur_month,
FROM    customers as c
WHERE   c.salesrep_id = 24
ORDER BY
        prev_month DESC
Run Code Online (Sandbox Code Playgroud)