在涉及聚合的MySql select语句中,是否可以只选择grouped by列而不选择聚合?
基本上,我想根据基于聚合的条件在子查询中选择id,在这种情况下,向客户支付的总金额:

select idclient, business_name from client where idclient in
(
  select idclient, sum(amount) as total
  from payment
  group by idclient
  having total > 100
)

... 但是这失败了,错误是Operand should contain 1 column(s),因为子查询同时选择id(我想要的)和total(我不想要的)。我能以任何方式从子查询结果中排除total吗?
编辑:如果可能的话,我宁愿避免使用连接——WHERE子句本身被传递到另一个现有函数。
抱歉,如果这是个骗局-我确实查过了,老实说。在大量的SQL聚合问题中,我找不到确切的答案。

最佳答案

您的查询应如下所示:

select idclient, business_name from client where idclient in
(
  select idclient
  from payment
  group by idclient
  having sum(amount) > 100
)

您需要将聚合函数放在having子句中,并在子查询中选择与where子句中相同的列。

关于mysql - 选择仅按列分组,而不是合计,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5494970/

10-11 00:09