有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'附近使用的语法
答案 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;