【发布时间】:2017-11-08 12:13:31
【问题描述】:
好的,我想做的就是这个。 如果我插入的金额加上列的总和不超过我的值,我只想插入,例如 112。我只求和一个发票金额,这是销售发票 ID 的来源。所以我要添加一个20 英镑。
所以我基本上需要一个查询,上面写着 如果金额+“列总和”小于或等于总量,则插入金额。
这是我的表格布局
sipID|SalesInvoice_id|Date|Amount
1|116|07/11/2017|2|
2|115|07/11/2017|88|
3|116|07/11/2017|22|
7|115|07/11/2017|22|
所以我认为 INSERT SELECT 可能会工作,所以我开始让 SELECT 查询首先工作,这是我的工作选择查询
SELECT SUM(`Amount`) FROM `salesinvoice_payments`
GROUP BY `SalesInvoice_id` HAVING SUM(`Amount`)+20 <= 112 AND `SalesInvoice_id`=115
目前,我基本上正在硬编码我希望添加的数量,即 20。
那么这个 select 语句在做什么。只有当 SUM(Amount)+20 小于或等于我的总数 112 时,它才会得到一个值。
这很好用。
回到我原来的问题。我只想在条件为真时插入。 我似乎无法获得正确的格式,例如
INSERT INTO `salesinvoice_payments` (`Amount`)VALUES (20)
SELECT SUM(`Amount`) FROM `salesinvoice_payments`
GROUP BY `SalesInvoice_id` HAVING SUM(`Amount`)+20 <= 100 AND `SalesInvoice_id`=115
【问题讨论】:
-
INSERT INTO ... SELECT没有VALUES语句。 dev.mysql.com/doc/refman/5.7/en/insert-select.html -
是的,但是 select 被用作 where 子句。如果满足条件,我想插入值 20。我不知道如何布置它,但我已经把我到目前为止所做的工作。我知道我提出的查询是错误的,但我不知道如何正确。
-
我已经发布了一个应该如何工作的答案。
标签: mysql