【问题标题】:MySQL statement not working properlyMySQL 语句无法正常工作
【发布时间】:2016-03-05 15:17:31
【问题描述】:

我有一个存储过程,其中有一个if 语句,其中foto_idintegerdatumsdate 类型:

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 语句返回行数。 我会很高兴任何指出我做错了什么的指针......

附:这些信息是否足够,还是我需要提供完整的过程和表格信息?

【问题讨论】:

  • 使用 SELECT EXISTS。

标签: mysql select stored-procedures


【解决方案1】:

首先,这是 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;

【讨论】:

  • 我只是尝试完全按照您提供的 if 语句语法编写,但是 MySQL Workbench 左右向我抛出错误.. 我只能写 if expression then statement; else statement; end if;
猜你喜欢
  • 2019-07-23
  • 2015-01-01
  • 2019-05-15
  • 2015-09-27
  • 2016-04-14
  • 1970-01-01
  • 1970-01-01
  • 2012-07-07
  • 2013-07-18
相关资源
最近更新 更多