Isso parece funcionar a partir de um teste rápido que acabei de fazer e evita a necessidade de verificar a existência de
x=1
duas vezes. SELECT SQL_CALC_FOUND_ROWS *
FROM mytable
WHERE x = 1
UNION ALL
SELECT *
FROM mytable
WHERE
FOUND_ROWS() = 0 AND x = 2;
Edit:Após o seu esclarecimento à pergunta, obviamente, as 2 consultas precisarão ser compatíveis com UNION para que o acima funcione.
A resposta para sua pergunta atualizada é Não. Isso não é possível em uma única consulta. Você precisaria usar alguma lógica de procedimento condicional para executar a consulta desejada.