Това изглежда работи от бърз тест, който току-що направих, и избягва необходимостта да проверявам за съществуването на x=1
два пъти.
SELECT SQL_CALC_FOUND_ROWS *
FROM mytable
WHERE x = 1
UNION ALL
SELECT *
FROM mytable
WHERE
FOUND_ROWS() = 0 AND x = 2;
Редактиране:След вашето изясняване на въпроса очевидно 2-те заявки трябва да са съвместими с UNION, за да работят по-горе.
Отговорът на актуализирания ви въпрос е Не. Това не е възможно в една заявка. Ще трябва да използвате някаква условна процедурна логика за да изпълните желаната заявка.