1

我有这个,我想将列单元格的值增加一,其中值为 null 或 0 到 5。当单元格中的值为 6 时,我想增加下一列。并重复。当行中每一列的值为 6 时,我需要转到下一行并执行相同的操作。例如:我在第一行更新第 01 列,加 1。下一个查询,加 1,.. 当值为 6 时,我需要对第 02 列做同样的事情......最好的方法是什么?谢谢

这个数据库是存储数据库,每个单元格值代表这个位置有多少个盒子

CREATE TABLE `ciselnik_sklad_regal_pozice` (
 `REGAL` int(10) unsigned NOT NULL,
 `POLICE` varchar(1) NOT NULL,
 `POZICE` varchar(5) NOT NULL,
 `01` varchar(45) DEFAULT NULL,
 `02` varchar(45) DEFAULT NULL,
 `03` varchar(45) DEFAULT NULL,
 `04` varchar(45) DEFAULT NULL,
 `05` varchar(45) DEFAULT NULL,
 `06` varchar(45) DEFAULT NULL,
 `07` varchar(45) DEFAULT NULL,
 `08` varchar(45) DEFAULT NULL,
 `09` varchar(45) DEFAULT NULL,
 `10` varchar(45) DEFAULT NULL,
 `11` varchar(45) DEFAULT NULL,
 `12` varchar(45) DEFAULT NULL,
 `13` varchar(45) DEFAULT NULL,
 `14` varchar(45) DEFAULT NULL,
 `15` varchar(45) DEFAULT NULL,
 `16` varchar(45) DEFAULT NULL,
 `17` varchar(45) DEFAULT NULL,
 `18` varchar(45) DEFAULT NULL,
 `19` varchar(45) DEFAULT NULL,
 `20` varchar(45) DEFAULT NULL,
 `21` varchar(45) DEFAULT NULL,
 `22` varchar(45) DEFAULT NULL,
 `23` varchar(45) DEFAULT NULL,
 `24` varchar(45) DEFAULT NULL,
 `25` varchar(45) DEFAULT NULL,
 `26` varchar(45) DEFAULT NULL,
 `27` varchar(45) DEFAULT NULL,
 `28` varchar(45) DEFAULT NULL,
 `29` varchar(45) DEFAULT NULL,
 `30` varchar(45) DEFAULT NULL,
 `31` varchar(45) DEFAULT NULL,
 `32` varchar(45) DEFAULT NULL,
 `33` varchar(45) DEFAULT NULL,
 `34` varchar(45) DEFAULT NULL,
 `35` varchar(45) DEFAULT NULL,
 `36` varchar(45) DEFAULT NULL,
 `37` varchar(45) DEFAULT NULL,
 `38` varchar(45) DEFAULT NULL,
 `39` varchar(45) DEFAULT NULL,
 `40` varchar(45) DEFAULT NULL) ENGINE=InnoDB DEFAULT CHARSET=utf8
4

2 回答 2

1

你可以试试这个。

UPDATE TestTable SET 
`01` = CASE WHEN `01` < 6 THEN `01`+1 ELSE `01` END,
`02` = CASE WHEN `01` = 6 AND `02` < 6 THEN `02`+1 ELSE `02` END,
`03` = CASE WHEN `02` = 6 AND `03` < 6 THEN `03`+1 ELSE `03` END,
`04` = CASE WHEN `03` = 6 AND `04` < 6 THEN `04`+1 ELSE `04` END,
`05` = CASE WHEN `04` = 6 AND `05` < 6 THEN `05`+1 ELSE `05` END,
`06` = CASE WHEN `05` = 6 AND `06` < 6 THEN `06`+1 ELSE `06` END,
`07` = CASE WHEN `06` = 6 AND `07` < 6 THEN `07`+1 ELSE `07` END;
于 2019-03-14T18:45:35.513 回答
0

您应该能够通过单个查询来做到这一点。如果需要,添加 where 子句。

UPDATE `table`
SET `01` = if(`01` >= 6,6,`01`+1),
    `02` = if(`02` >= 6,6,if(`01` = 6 AND COALESCE(`01`,0) => 0,`02`+1,`02`)),
    `03` = if(`03` >= 6,6,if(`02` = 6 AND COALESCE(`02`,0) => 0,`03`+1,`03`)),
    etc...
于 2019-03-14T18:23:06.527 回答