从空列增加列中的行

时间:2014-08-18 03:55:53

标签: php sql oracle

我有一个关于增加表中列的问题。所以我想要实现的是,

我正在使用PHP程序,以便当用户按下按钮时插入每一行,每行插入时DO_NO加1。

我的SQL命令是什么,

insert into delivery (packing_no, do_no) values ('PACKING1', ((select max(do_no) from delivery)+1))

packing_no基于文本输入

插入

问题是,

  1. 当表为空时,DO_NO不会更新。意味着它一直空着。
  2. 我认为这不是实现此类问题的有效方法。
  3. 有人可以建议我更好的解决方法吗?

    感谢。

2 个答案:

答案 0 :(得分:1)

您可以使用CASE条件,但我没有看到任何其他方法来实现此目的。

DECLARE varMax(INT)
SET varMax = (select max(do_no) from delivery);

insert into delivery (packing_no, do_no) 
values ('PACKING1', (CASE WHEN varMax IS NULL THEN 1 ELSE (varMax +1))

或者为了简化,您也可以检查行数

SET varMax = (select count(do_no) from delivery);

如其他答案所述,进一步简化它,使用ISNULL

insert into delivery (packing_no, do_no) 
values ('PACKING1', (select ISNULL(max(do_no),0)+1 from delivery))

答案 1 :(得分:1)

在这种情况下使用ISNULL

 insert into delivery (packing_no, do_no) values ('PACKING1', (select ISNULL(max(do_no),0)+1 from delivery))

ISNULL正在做的是在do_no为NULL或为空时返回0。