这是我的表结构:
table.id(自动增量;主键)
table.qty(可能的值:0 - 1000)
行:
+----+-----+ | id | qty | +----+-----+ | 1 | 0 | | 2 | 5 | | 3 | 5 | | 4 | 10 | +----+-----+
我希望减少12的可用数量.意思是,新结果应该是:
编辑:我可能应该指定所有这些数字是任意的.它们可以是任何东西.
+----+-----+ | id | qty | +----+-----+ | 1 | 0 | | 2 | 0 | | 3 | 0 | | 4 | 8 | +----+-----+
现在,我做了以下事情:
SELECT id, qty FROM table WHERE qty > 0 LIMIT 12
过滤所有数据以确定从每行中删除的数量
使用PDO预处理语句批量更新受影响的行:
UPDATE `table` SET qty = ? WHERE id = ?`
Run Code Online (Sandbox Code Playgroud)我的问题:在MySQL中有没有办法做到这一点?
SET @q = 12;
UPDATE `table`
SET qty = CONCAT(GREATEST(qty - @q, 0), LEFT(@q := @q - LEAST(qty, @q), 0))
ORDER BY id;
Run Code Online (Sandbox Code Playgroud)
在sqlfiddle上看到它.
| 归档时间: |
|
| 查看次数: |
218 次 |
| 最近记录: |