以下是我的表格。
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
。解决这个问题的最佳方法是什么?
答案 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)