【问题标题】:Getting invalid use of group function in update query在更新查询中无效使用组功能
【发布时间】:2020-05-05 02:55:30
【问题描述】:

有人可以帮我解决问题吗 在下面的查询中得到“组功能的无效使用”

UPDATE t1 
JOIN t2 ON t1.id=t2.id
SET t1.total_amount = SUM(IF((t2.`due` <= 0), t2.`amount`, 0))
WHERE t2.flag=1 AND t2.id=003;

【问题讨论】:

标签: mysql sql join group-by sql-update


【解决方案1】:

您想在子查询中聚合,然后在外部查询中加入并设置:

update t1
inner join (
    select id, sum(case when due < 0 then t2.amount else 0 end) total_amount
    from t2
    where id = 3 and flag = 1
    group by id
) t2 on t1.id = t2.id
set t1.total_amount = t2.total_amount

【讨论】:

  • 请注意,这两个查询是不等价的。如果t2 中没有匹配项,则第一个查询将不执行任何操作,而第二个查询会将total_amount 设置为NULL。
  • @PaulSpiegel:是的,你是对的,谢谢。让我从我的答案中删除第二个查询。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-01-23
  • 1970-01-01
  • 2012-10-03
  • 2017-07-24
  • 2015-06-30
相关资源
最近更新 更多