2016-04-23 122 views
0

我修改了下面的语句,但仍然在DECLARE语句中出现错误。在mysql语句中使用局部变量IF语句

BEGIN DECLARE searchresult int(11); SET searchresult =(从wbsimsynuqsql选择count(*),其中SimBase ='a cappella'); IF从simsyn1sql信息搜索结果> 0 THEN 选择*,其中了baseid =(从wbsimsynuqsql SELECT DISTINCT了baseid其中SimBase = '清唱') ELSE 从simsyn1sql其中了baseid =(选择从wbsimsynuqsql其中SimSyn ='清唱鲜明了baseid选择* ')

END IF; END

我在PHPMYADMIN中使用下面的表达式,目的是稍后在PHP/MySQL应用程序中使用它。它给出了与第1行中的DECLARE语句有关的错误。

我已经看过MySQL中的示例声明,但没有看到错误,但是我做错了什么,希望得到更正/建议。

DECLARE searchresult int(11); 
SET searchresult=(Select count(*) from wbsimsynuqsql where SimBase='a cappella'); 
IF searchresult >0 
{Select * from simsyn1sql where BaseID = (Select Distinct BaseID from wbsimsynuqsql where SimBase='a cappella')} 
[ ELSE 
    {Select * from simsyn1sql where BaseID = (Select Distinct BaseID from wbsimsynuqsql where SimSyn='a cappella')} ] 

END IF; 
+2

'mysql'中没有'{'和'[']括号。你为什么放他们? – Shaharyar

+0

@Shaharyar可能是好运或出于一厢情愿。为什么他们在没有人阅读的时候写文档? – tadman

+0

@tadman我把这个讽刺作为一个学习曲线,发现'''在mysqlm中的用法,但仍然找不到'['。你想分享你的知识吗? – Shaharyar

回答

1

DECLARE只允许一个内BEGIN ... END复合语句,并且必须是在它的开始,任何其他语句之前。 像里面CREATE PROCEDURE您可以使用DECLARE

IF声明缺少THEN

,并去掉方括号([])和花括号({})

如果你的子查询返回不止你了baseid可能必须使用IN,而不是=

sqlfiddle