sql >> Databáze >  >> RDS >> Mysql

MYSQL, pokud výběrový dotaz vrátí 0 řádků, pak jiný výběrový dotaz?

Zdá se, že to funguje na základě rychlého testu, který jsem právě provedl, a vyhýbá se nutnosti kontrolovat existenci x=1 dvakrát.

SELECT SQL_CALC_FOUND_ROWS *
FROM mytable
WHERE x = 1

UNION ALL

SELECT *
FROM mytable
WHERE 
FOUND_ROWS() = 0 AND x = 2;

Edit:Po vašem upřesnění otázky bude zjevně nutné, aby 2 dotazy byly kompatibilní s UNION, aby výše uvedené fungovaly.

Odpověď na vaši aktualizovanou otázku je Ne. To není možné v jediném dotazu. Budete muset použít nějakou podmíněnou procedurální logiku pro provedení požadovaného dotazu.



  1. Proč je načítání objektů SQLAlchemy přes ORM 5-8x pomalejší než řádky přes nezpracovaný kurzor MySQLdb?

  2. Jak získat aktuální datum v SQLite

  3. Java combobox houpačka

  4. Uživatelé aplikace versus zabezpečení na úrovni řádků