MySQL语句无法正常工作

时间:2015-12-01 16:11:46

标签: mysql select stored-procedures

我有一个存储过程,其中有if语句,其中foto_idintegerdatums属于date类型:

if((select count(*) from (select pv.Datums, pv.Fotografs from pieteikumi_view pv 
    where pv.Fotografs=foto_id and pv.Datums=datums)as tab) = 0) then
    select 3;
else
    select -2;

当我在程序之外用完全相同的值测试它时,就像调用这样的程序:

select count(*) from (select pv.Datums, pv.Fotografs from pieteikumi_view pv
    where pv.Fotografs='9' and pv.Datums='2016-01-01')as tab;

我得到了所需的结果,但是在内部过程中if语句返回true,即使此select语句返回行计数。 我很高兴能指出我做错了什么......

P.S。这些信息是否足够,还是需要提供完整的程序和表信息?

1 个答案:

答案 0 :(得分:0)

首先,这是if语句在mySql中的显示方式:

IF Boolean_expression 
     { sql_statement | statement_block } 
[ ELSE 
     { sql_statement | statement_block } ] 

如果你这样写,一切都应该是好的。此外,你可以随时使用CASE WHEN,它会是这样的:

SELECT CASE WHEN 
((select count(*) from (select pv.Datums, pv.Fotografs from pieteikumi_view pv where pv.Fotografs=foto_id and pv.Datums=datums)as tab) = 0) 
THEN 3 
ELSE -2 
END;