Cela semble fonctionner à partir d'un test rapide que je viens de faire et évite d'avoir à vérifier l'existence de x=1
à deux reprises.
SELECT SQL_CALC_FOUND_ROWS *
FROM mytable
WHERE x = 1
UNION ALL
SELECT *
FROM mytable
WHERE
FOUND_ROWS() = 0 AND x = 2;
Edit :Suite à votre clarification de la question, les 2 requêtes devront évidemment être compatibles UNION pour que ce qui précède fonctionne.
La réponse à votre question mise à jour est non. Cela n'est pas possible dans une seule requête. Vous auriez besoin d'utiliser une logique procédurale conditionnelle pour exécuter la requête souhaitée.