Mysql
 sql >> Datenbank >  >> RDS >> Mysql

MYSQL, wenn eine Auswahlabfrage 0 Zeilen zurückgibt, dann eine andere Auswahlabfrage?

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.