Zdá se, že to funguje na základě rychlého testu, který jsem právě provedl, a vyhýbá se nutnosti kontrolovat existenci x=1
dvakrát.
SELECT SQL_CALC_FOUND_ROWS *
FROM mytable
WHERE x = 1
UNION ALL
SELECT *
FROM mytable
WHERE
FOUND_ROWS() = 0 AND x = 2;
Edit:Po vašem upřesnění otázky bude zjevně nutné, aby 2 dotazy byly kompatibilní s UNION, aby výše uvedené fungovaly.
Odpověď na vaši aktualizovanou otázku je Ne. To není možné v jediném dotazu. Budete muset použít nějakou podmíněnou procedurální logiku pro provedení požadovaného dotazu.