0

複数の列を含む多数のクエリがあり、1 つのサブクエリが結果を返すまで、1 つのクエリを実行して順番にテストしたいと考えています。COALESCE ステートメントでは、サブクエリごとに単一の列のみを使用して返すことができることがわかりました。これは、私のデータセットでは機能しません。

subquery1 = SELECT col1, col2, col3 FROM table1 WHERE x = y
subquery2 = SELECT col2, col4, col7 FROM table2 WHERE t = p
subquery3 = SELECT col5, col8, col9 FROM table3 WHERE v = b

これらのクエリのいずれかが行を返すまで、これらの各クエリを順番にテストすることは可能ですか?

4

2 に答える 2

0
SELECT  1 AS o, col1, col2, col3
FROM    table1
WHERE   x = y
UNION ALL
SELECT  2 AS o, col2, col4, col7
FROM    table2
WHERE   t = p
UNION ALL
SELECT  3 AS o, col5, col8, col9
FROM    table3
WHERE   v = b
ORDER BY
        o
LIMIT   1
于 2014-07-08T18:27:55.087 に答える
0

行を含む最初のクエリのみを返したい場合は、プロシージャを記述する必要があります。

delimiter $$
create procedure myProc()
begin
    if exists(SELECT col1, col2, col3 FROM table1 WHERE x = y) then
        SELECT col1, col2, col3 FROM table1 WHERE x = y;
    elseif exists(SELECT col2, col4, col7 FROM table2 WHERE t = p) then
        SELECT col2, col4, col7 FROM table2 WHERE t = p;
    elseif exists(SELECT col5, col8, col9 FROM table3 WHERE v = b) then
        SELECT col5, col8, col9 FROM table3 WHERE v = b;
    end if;
end $$
delimiter ;

そして、それを呼び出します:

call myProc();
于 2014-07-08T18:33:04.337 に答える