【问题标题】:How to add more conditions with MySQL query?如何使用 MySQL 查询添加更多条件?
【发布时间】:2014-08-21 16:40:36
【问题描述】:
SELECT 
`loanac`.`id`, 
`loanac`.`name`, 
`loanac`.`lacc`, 
SUM(`loantrans`.`in`) as totalin, 
SUM(`loantrans`.`out`) as totalout

FROM loanac, loantrans
WHERE `loanac`.`lacc`=`loantrans`.`account`
GROUP BY `loanac`.`lacc`

这是我上面的查询,可以正常显示所有帐户,但是我需要找到 SUM(out) > SUM (in) 而不是所有帐户的帐户>

我尝试使用 AND 添加条件,但显示错误,有人可以帮忙吗?

【问题讨论】:

标签: mysql sql


【解决方案1】:

对聚合函数(如 SUM 或 COUNT)执行标准的方法是 HAVING,而不是 WHERE

SELECT loanac.id, loanac.name, loanac.lacc, loanac.phone, 
       SUM(loantrans.in) as totalin, SUM(loantrans.out) as totalout 
FROM loanac, 
     loantrans 
WHERE loanac.lacc=loantrans.account 
GROUP BY loanac.lacc
HAVING SUM(loantrans.out) > SUM(loantrans.in)

【讨论】:

  • 很高兴您尝试提供帮助,您的查询仅返回 3 个结果,但应该有超过 300 个结果!现在知道如何解决了吗?
  • 尝试按所有非聚合列分组
  • 在我看来,我只能按 loanac.lacc 或 loantrans.account 分组,但都返回相同的结果:(
  • 在无法访问您的数据的情况下,我无法回答为什么您获得的记录数量与预期不同。在 SQL 中,您必须按任何非聚合列进行分组,而您不是这样的事实让我感到困惑。不过,使用 Have 子句是正确的。
  • Scott,这是为您上传的数据库,请看一下好吗? dropbox.com/sh/o0ro7r23ztnpfky/AABrfLYUB5DUk-FRvPegHZF_a
【解决方案2】:

尝试使用有

SELECT loanac.id, 
loanac.name, 
loanac.lacc, 
loanac.phone, 
SUM(loantrans.in) as totalin, 
SUM(loantrans.out) as totalout 
FROM loanac, loantrans 
WHERE loanac.lacc=loantrans.account 
GROUP BY loanac.lacc 
HAVING SUM(out) > SUM (in) 

【讨论】:

  • 简短的描述和正确的答案格式可以带来良好的声誉,但没有这个你会错过这些点
  • 很高兴您尝试提供帮助,您的查询仅返回 3 个结果,但应该有超过 300 个结果!现在知道如何解决了吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-06-24
  • 2010-11-26
  • 2020-01-22
  • 2014-06-13
相关资源
最近更新 更多