Wygląda na to, że działa to z szybkiego testu, który właśnie wykonałem i pozwala uniknąć konieczności sprawdzania istnienia x=1
dwa razy.
SELECT SQL_CALC_FOUND_ROWS *
FROM mytable
WHERE x = 1
UNION ALL
SELECT *
FROM mytable
WHERE
FOUND_ROWS() = 0 AND x = 2;
Edycja:po wyjaśnieniu pytania, oczywiście, 2 zapytania będą musiały być kompatybilne z UNION, aby powyższe zadziałało.
Odpowiedź na Twoje zaktualizowane pytanie brzmi:Nie. Nie jest to możliwe w przypadku pojedynczego zapytania. Będziesz musiał użyć warunkowej logiki proceduralnej aby wykonać żądane zapytanie.