MySql过程从不同的表返回变量结果

时间:2019-02-19 16:09:56

标签: mysql

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(我不认为),因为一旦得到一组结果,我想停止。因此,如果我在第一个查询之后找到匹配项,即使后续查询也可能返回结果,也只需返回那些结果即可。

谢谢!

1 个答案:

答案 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;