9

我有具有数字范围的客户组(从 Customernumber 到 Customernumber)。

select g.id,
(select count(*), sum(sales)
FROM transactions t1 
where t1.customernumber between g.from_customernumber and g.to_customernumber)
from customer_groups g

选择此问题时,我会得到这个错误

ERROR 1241 (21000): Operand should contain 1 column(s)

我能做些什么来解决这个问题?我已经阅读了一些关于此的主题,但我没有找到解决方案。

此致!

4

1 回答 1

16

MySQL 期望您的子查询中有一个列,即括号中的 SELECT 只能选择一个列。

在您的示例中,您可以使用两个子查询,一个返回计数,另一个返回总和,但您也可以将查询重写为:

SELECT g.id, COUNT(t1.customernumber), SUM(sales)
FROM
  customer_groups g LEFT JOIN transactions t1
  ON t1.customernumber between g.from_customernumber and g.to_customernumber
于 2013-11-08T14:47:12.117 回答