MySQL存储过程中是否可能返回具有值的第一次选择的结果?
例如,假设我有3个具有相同列的表。我想对每个命令依次执行选择。如果第一个有结果,则仅返回那些结果。如果没有,请检查第二个,等等。
在伪代码中是这样的!
if (select code from table1 where col='apples') then
return these results
else (select code from table2 where col='apples') then
return these results
else (select code from table3 where col='apples') then
return these results
endif
我不能使用UNION(我不认为),因为一旦得到一组结果,我想停止。因此,如果我在第一个查询之后找到匹配项,即使后续查询也可能返回结果,也只需返回那些结果即可。
谢谢!
答案 0 :(得分:1)
您可以使用count
函数查看是否找到了任何记录,如果是,请使用select。将此逻辑封装在一个块中,以便一旦找到结果集,便可以随时离开。您也可以使用准备好的语句
您的伪代码在MySQL中看起来像这样。
SearchBlock:Begin
SET rCount = coalesce((select count(*) from table1 where col='apples'),0);
IF (rCount > 0) THEN
select code from table1 where col='apples';
LEAVE SearchBlock;
END IF;
SET rCount = coalesce((select count(*) from table2 where col='apples'),0);
IF (rCount > 0) THEN
select code from table2 where col='apples';
LEAVE SearchBlock;
END IF;
SET rCount = coalesce((select count(*) from table2 where col='apples'),0);
IF (rCount > 0) THEN
select code from table2 where col='apples';
LEAVE SearchBlock;
END IF;
End SearchBlock;