我有这个table,我想将列单元格的值增加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
答案 0 :(得分: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;
答案 1 :(得分: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...