Mysql 从数据库中的多行中删除数量

Mysql 从数据库中的多行中删除数量,mysql,Mysql,这是我的表格结构: 表id(自动递增;主键) 表数量(可能值:0-1000) 行: 我的问题是:有没有办法在MySQL中实现这一切 SET @q = 12; UPDATE `table` SET qty = CONCAT(GREATEST(qty - @q, 0), LEFT(@q := @q - LEAST(qty, @q), 0)) ORDER BY id; 在电视上看 请参见。如何决定在id的四个不同值之间分配12?把它们整理好?从全部中平均减去?到目前为止,提供的两个答案实际上并没

这是我的表格结构:
id
(自动递增;主键)
数量
(可能值:0-1000)

行:

我的问题是:有没有办法在MySQL中实现这一切

SET @q = 12;

UPDATE `table`
SET qty = CONCAT(GREATEST(qty - @q, 0), LEFT(@q := @q - LEAST(qty, @q), 0))
ORDER BY id;
在电视上看


请参见。

如何决定在id的四个不同值之间分配12?把它们整理好?从全部中平均减去?到目前为止,提供的两个答案实际上并没有让你达到你想要的行为。你如何决定12在id的四个不同值之间的分配?把它们整理好?从全部中平均减去?到目前为止提供的两个答案实际上并没有让你达到你想要的行为。从现在的阅读中,我的理解是这将通过每一行,每一行它都会做一个正确的错误声明:如果数量-12大于0,它将返回任何差异;否则它将返回0。我需要它更进一步,把12变成一个递减的数字。我想你用的是:数量,但我在那里迷路了。嗨,我没法用这个。逗号导致错误-#1064-您的SQL语法有错误;检查与您的MySQL服务器版本对应的手册,以了解在第行的“@q:=@q-LEAST(
inv\u layer
qty\u avail
,@q)ORDER BY
inv\u layer
id
”附近使用的正确语法1@phpmeh:嗯。。。很抱歉。。。我没想到
UPDATE
会要求每一项作业都是一列的。。。上面更新的代码已经过测试,可以正常工作!好极了我喜欢你的CONCAT(,左(,0))工作。我还在学习,但这很聪明。用现成的答案回答问题,没有指导,只会导致错误。从现在的阅读中,我的理解是,这将贯穿每一行,每一行都会做一个正确的错误陈述:如果数量-12大于0,它将返回任何差异;否则它将返回0。我需要它更进一步,把12变成一个递减的数字。我想你用的是:数量,但我在那里迷路了。嗨,我没法用这个。逗号导致错误-#1064-您的SQL语法有错误;检查与您的MySQL服务器版本对应的手册,以了解在第行的“@q:=@q-LEAST(
inv\u layer
qty\u avail
,@q)ORDER BY
inv\u layer
id
”附近使用的正确语法1@phpmeh:嗯。。。很抱歉。。。我没想到
UPDATE
会要求每一项作业都是一列的。。。上面更新的代码已经过测试,可以正常工作!好极了我喜欢你的CONCAT(,左(,0))工作。我还在学习,但这很聪明。用现成的答案回答问题,而没有指导,只会导致失败。 +----+-----+ | id | qty | +----+-----+ | 1 | 0 | | 2 | 0 | | 3 | 0 | | 4 | 8 | +----+-----+
UPDATE `table` SET qty = ? WHERE id = ?`
SET @q = 12;

UPDATE `table`
SET qty = CONCAT(GREATEST(qty - @q, 0), LEFT(@q := @q - LEAST(qty, @q), 0))
ORDER BY id;