选择max + 1 else 1

时间:2015-10-24 08:26:16

标签: sql postgresql

以下是我的表格。

        ID  BookName StoreId  Sequence Price
        1    ABC       1         1      450
        2    DEF       1         2      450
        3    GHF       2         1      300

所以上面的表是书桌,每个商店都会有多本书。我正在编写一个函数,它将在此表中插入书记录。在插入新记录时,我们的要求是新书序列应该是相应商店的Max(Sequence) + 1。我已经写了下面的查询。

    INSERT INTO Book(BookName,StoreId,Sequence,Price) Values
       (@name,@sid,(SELECT MAX(Sequence) + 1 from book where StoreId=@StoreId),@price)

当我们已经在表格中插入storeId时,此查询工作正常但是只要我storeId不存在,表格序列将显示为NULL,因为我们没有“{1}} t具有该商店的任何现有序列,Max(sequence)+1将提供Null。解决这个问题的最佳方法是什么?

2 个答案:

答案 0 :(得分:0)

试一试:

INSERT INTO Book
       (BookName,StoreId,Sequence,Price)
Values
       (@name,@sid,(SELECT MAX(Sequence) + 1 from book),@price)

答案 1 :(得分:0)

你必须使用某种isnull函数或合并。

请参阅此内容。

What is the PostgreSQL equivalent for ISNULL()

INSERT INTO Book(BookName,StoreId,Sequence,Price) Values
       (@name,@sid,coalesce((SELECT MAX(Sequence) + 1 from book where StoreId=@StoreId),1),@price)