【问题标题】:Mysql insert only if conditions are metMysql只有在满足条件时才插入
【发布时间】: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


【解决方案1】:

INSERT INTO ... SELECT 没有VALUES 语句。

查询

INSERT INTO `salesinvoice_payments` (`Amount`)
SELECT 20 FROM `salesinvoice_payments`
GROUP BY `SalesInvoice_id` HAVING SUM(`Amount`) + 20 <= 100 AND `SalesInvoice_id`= 115

【讨论】:

  • 我没有想到将值放在 select 语句中。谢谢。我也很接近。
猜你喜欢
  • 2021-08-25
  • 1970-01-01
  • 2021-08-21
  • 1970-01-01
  • 2018-12-21
  • 1970-01-01
  • 1970-01-01
  • 2018-07-03
  • 1970-01-01
相关资源
最近更新 更多