Vous pouvez simplement l'ajouter à la clause where. Comme ci-dessous
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
Mise à jour: Vous pouvez utiliser la procédure stockée comme ci-dessous.
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);
Merci, mais c'est une solution coûteuse. Il va exécuter les deux déclarations. En fait, ce n'est qu'un exemple de requête. En réalité, ma table est très grande et votre solution traversera toute la table sur les deux instructions. Donc, ce serait mieux s'il y a une solution IF ELSE. –
@ZaheerAbbas Réponse mise à jour. –
@ZaheerAbbas Avez-vous regardé la procédure? Cela peut être facilement géré par la procédure. –