mysql从具有复杂条件的单个表返回单个结果

时间:2012-04-30 12:40:53

标签: mysql

我有这张桌子:

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值。 请帮助!!!

2 个答案:

答案 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