Mysql 如果还有别的,请看一下

Mysql 如果还有别的,请看一下,mysql,conditional,Mysql,Conditional,我有一个存储过程,在MySQL中使用if-elseif-else。在第一个例子中,无论我传入什么参数,我都会得到null。有人能帮我吗 CREATE DEFINER=`root`@`localhost` PROCEDURE `CBattle`(IN btle varchar(50), OUT coun1 varchar(50), OUT coun2 varchar(50)) BEGIN DECLARE shipnum int; IF 2 != (SELECT COUNT(classes.coun

我有一个存储过程,在MySQL中使用if-elseif-else。在第一个例子中,无论我传入什么参数,我都会得到null。有人能帮我吗

CREATE DEFINER=`root`@`localhost` PROCEDURE `CBattle`(IN btle varchar(50), OUT coun1 varchar(50), OUT coun2 varchar(50))
BEGIN
DECLARE shipnum int;
IF 2 != (SELECT COUNT(classes.country) FROM classes, outcomes, ships WHERE outcomes.ship = ships.name AND ships.class = classes.class AND outcomes.battle = btle )
THEN 
SET coun1 = null;
SET coun2 = null;
ELSE 
SET coun1 = (SELECT country FROM classes, outcomes, ships WHERE outcomes.ship = ships.name AND ships.class = classes.class AND outcomes.battle = btle LIMIT 1);
SET coun2 = (SELECT country FROM classes, outcomes, ships WHERE outcomes.ship = ships.name AND ships.class = classes.class AND outcomes.battle = btle LIMIT 1,1);
END IF;
END

如果不查看实际数据,将无法帮助您。我所能说的就是把查询拉出来,直接运行它们,看看你是否能发现问题。谢谢,我希望我犯了一些MySQL的小错误。也许……也许不是。如果2=选择这部分有点奇怪。我不知道如果发现正好有两个不同的国家/地区关系,为什么要将NULL发送回。我也不确定你测试的所有记录是否都有两个国家的关系。但是,这些都是数据问题,只有我们知道这些表中的内容才能解决。。。您应该能够通过自己运行组成proc的各个查询来解决这个问题。