Dies scheint nach einem Schnelltest zu funktionieren, den ich gerade durchgeführt habe, und vermeidet die Notwendigkeit, auf die Existenz von x=1
zu prüfen zweimal.
SELECT SQL_CALC_FOUND_ROWS *
FROM mytable
WHERE x = 1
UNION ALL
SELECT *
FROM mytable
WHERE
FOUND_ROWS() = 0 AND x = 2;
Bearbeiten:Nach Ihrer Klarstellung zu der Frage müssen die beiden Abfragen offensichtlich UNION-kompatibel sein, damit das oben Genannte funktioniert.
Die Antwort auf Ihre aktualisierte Frage lautet Nein. Dies ist in einer einzelnen Abfrage nicht möglich. Sie müssten eine bedingte prozedurale Logik verwenden um die gewünschte Abfrage auszuführen.