我有这张桌子:
table(fied1 int,field2 int,field3 varchar(40));
我想在没有存储过程的情况下执行以下操作:
declare int nr default 0;
select coalesce(max(field1),0) into nr from table where field2=? and field3=?;
if(nr = 0) then
select coalesce(max(field1),0)+1 into nr from table;
end if;
我希望单个选择的nr值。 请帮助!!!
答案 0 :(得分:0)
如果根据where子句找不到匹配项,则仅使用以下查询在field1列中获取一个加号到最后一个插入值,否则返回存储在field1中的最大值:
如果表中没有记录,则此查询正在处理该案例。
如果field1的值为0,则以下语句中的过滤器crieteria“和field1<> 0”也是必需的,否则从以下查询中删除此过滤器(和field1<> 0)
Select coalesce(
max(field1),
(select coalesce(max(field1),0)+1 from table)
)
from table where field2=? and field3=? and field1<>0;
答案 1 :(得分:0)
我认为这可以捕捉您的要求:
SELECT
CASE
WHEN (max(field1) IS NULL OR max(field1) = 0) AND field2=? AND field3=? THEN (max(field1)+1)
ELSE max(field1)
END AS `field1_max`
FROM table