Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/231.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
mysql每次销售中每个唯一ID的累计金额:_Mysql_Sql_Sql Update_Mysql 8.0 - Fatal编程技术网

mysql每次销售中每个唯一ID的累计金额:

mysql每次销售中每个唯一ID的累计金额:,mysql,sql,sql-update,mysql-8.0,Mysql,Sql,Sql Update,Mysql 8.0,我无法添加和累积每个id的金额, 我使用这个解决方案,但它不起作用,它将所有ID相加 id product_id quantity acumulado 168 190 1 1 169 190 3 4 170 195 1 5 171 190 25.60 30.60 172 190 1 31.60 我用这个

我无法添加和累积每个id的金额, 我使用这个解决方案,但它不起作用,它将所有ID相加

id     product_id  quantity  acumulado
168    190         1         1
169    190         3         4
170    195         1         5
171    190         25.60     30.60
172    190         1         31.60
我用这个:

SET @csum := 0;

UPDATE sma_sale_items
   SET acumulado = (@csum := @csum + quantity)
 ORDER BY id, product_id;
有解决办法吗?我需要这个

id     product_id  quantity  acumulado
168    190         1         1
169    190         3         4
170    195         1         1
171    190         25.60     29.60
172    190         1         30.60

对于版本5.7?

您可以使用包含窗口分析功能的
SELECT
语句,而不是
UPDATE
语句:

SELECT id, product_id, quantity, SUM(quantity) OVER (ORDER BY id) AS acumulado
  FROM sma_sale_items
acumulado
列不需要存储在作为可计算列的表中

如果您仍然喜欢
更新
,请使用:

UPDATE sma_sale_items s1
 JOIN (
      SELECT id, product_id, SUM(quantity) OVER (ORDER BY id) AS acumulado
        FROM sma_sale_items
       ORDER BY id
      ) s2 ON s1.ID=s2.ID
  SET s1.acumulado = s2.acumulado;

<强>更新< /强>:根据最后的编辑考虑使用

acumulado(按产品划分\u id按id排序)的总和(数量)

而不是像acumulado那样对(按id排序的订单)求和(数量)

通过添加按产品id划分的
分区
,以区分按
产品id划分的总和


谢谢,ID195不应与ID190一起添加,它们必须是每个idwelcome@KevinGomez的总和,但是您能查看您的acumulado值与演示中的值吗?