単純にwhere句に追加できます。
更新
set @x=0;
set @y=0;
select 33 as A from dual
union all
select 44 as A from dual
where
@y = @x
union all
select 55 as A from dual
where
@y != @x
以下のように:あなたは以下のようなストアドプロシージャを使用することができます。
drop procedure proc_name;
DELIMITER //
CREATE DEFINER=`root`@`localhost` PROCEDURE `proc_name`(
IN `x` int, IN `y` int
)
BEGIN
if(x = y)then
set @a = 'select 33 as A from dual
union all
select 44 as A from dual ';
else
set @a = 'select 33 as A from dual
union all
select 55 as A from dual ';
end if;
PREPARE stmt FROM @a;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
END//
DELIMITER ;
call proc_name(1,0);
ありがとうございますが、コストのかかるソリューションです。両方のステートメントを実行します。実際、これは単なる例示的なクエリです。実際には、私のテーブルは非常に大きく、ソリューションは両方のステートメントでテーブル全体を走査します。したがって、IF ELSEソリューションがあればより良いでしょう。 –
@ZaheerAbbas答えを更新しました。 –
@ ZaheerAbbas手続きを見ましたか?それは手続きを介して簡単に処理することができます。 –