在更新查询中使用聚合时出现语法错误

时间:2015-07-06 19:03:04

标签: mysql sql

有2个表格。(发票,分期付款)。 第一个是发票的基本细节。

Invoice table:
---------
Invoice_Num
Value
Down_Payment
Balance
Customer_name
Item_ID
Last_Paid_date

等等。

其次是发票的分期付款。

Installment table:
---------
Invoice_Num
Date
Paid
Balance 

ex:有人在2015年6月25日买了一台笔记本电脑。总价1000美元。他支付了200美元的首付款。余额是800美元。然后他支付了5个这样的分期付款

Date           Paid   Balance
2015-July-25   100$   700$
2015-Aug-25    100$   600$
2015-Sep-10    150$   450$
2015-Oct-18    100$   350$
2015-Nov-23    120$   230$

现在我要在第一个表列名“Last_Paid_date”中更新2015年11月23日

我试过这个。

update invoice,installment 
set invoice.last_paid_date=max(date) 
where invoice.invoice_num=installment.invoice_num 
group by installment.num

出现语法错误:

  

java.sql.SQLException:您的SQL语法中有错误;检查   手册,对应右边的MySQL服务器版本   在第1行的'group by installment.card'附近使用的语法

1 个答案:

答案 0 :(得分:5)

您不能在更新语句中使用group by。您应该在此处执行的操作是编写查询以获取每个组中的最大日期,并在更新中使用JOIN来设置正确的值:

UPDATE invoice i
JOIN(
   SELECT invoice_num, MAX(datecolumn) AS latestDate
   FROM installment
   GROUP BY invoice_num) tmp ON tmp.invoice_num = i.invoice_num
SET i.last_paid_date = tmp.latestDate;