Py学习  »  DATABASE

使用if和max更新mysql

ikiK • 5 年前 • 1599 次点击  

我已经提交了默认为空的strp_aa。提交的strp_-a a只应在其为null且MAX strp_-aa+1时更新,如果其不为null且已具有数字,则应保持不变。

代码的简短版本是

UPDATE STRANKEP
SET strp_aa = IF(strp_aa=null, strp_aa+1, strp_aa)
WHERE strp_ID=36;

也很累

UPDATE STRANKEP
                SET strp_aa = IF(strp_aa=null, (SELECT MAX(strp_aa)) +1, (SELECT (strp_aa) WHERE strp_ID=36)
                WHERE strp_ID=36;

我试了很多像这里提到的 Update MySQL with if condition :

UPDATE STRANKEP
SET strp_aa = CASE WHEN strp_aa = NULL THEN  MAX(strp_aa) + 1 ELSE strp_aa END
WHERE strp_ID = 36;

mysql query to update field to max(field) + 1 尝试了各种各样的组合与提供的答案,它不会为我工作。其中一个版本是:

    UPDATE STRANKEP
                    SET strp_aa = IF((SELECT strp_aa )!=null,((SELECT selected_value2 FROM (SELECT (strp_aa) AS selected_value2 FROM STRANKEP WHERE strp_ID=36) AS sub_selected_value2)), ((SELECT selected_value FROM (SELECT MAX(strp_aa) AS selected_value FROM STRANKEP) AS sub_selected_value) + 1)  )
                    WHERE strp_ID=36;

这只是不断添加一个,即使有一个数字设置在strp_a。。。 我不知道还能尝试什么。

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/56159
 
1599 次点击  
文章 [ 1 ]  |  最新文章 5 年前
GMB
Reply   •   1 楼
GMB    5 年前

你可以使用 update ... join 语法:

update strankep s
cross join (select max(strp_aa) max_strp_aa from strankep) m
set s.strp_aa = m.max_strp_aa + 1
where s.strp_id = 36 and s.strp_aa is null

这个 cross join 使 strp_aa 在整张桌子上。这个 where 子句删除行 不是 null