sql >> Database >  >> RDS >> Mysql

MYSQL als een select-query 0 rijen retourneert en een andere select-query?

Dit lijkt te werken op basis van een snelle test die ik zojuist heb gedaan en vermijdt de noodzaak om te controleren op het bestaan ​​van x=1 tweemaal.

SELECT SQL_CALC_FOUND_ROWS *
FROM mytable
WHERE x = 1

UNION ALL

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

Bewerken:na uw verduidelijking van de vraag moeten de twee vragen uiteraard UNION-compatibel zijn om het bovenstaande te laten werken.

Het antwoord op uw bijgewerkte vraag is Nee. Dit is niet mogelijk in één enkele zoekopdracht. Je zou wat voorwaardelijke procedurele logica moeten gebruiken om de gewenste zoekopdracht uit te voeren.



  1. MySQL gebruikt geen indexen met WHERE IN-clausule?

  2. Database-sharding versus partitionering

  3. Vind schendingen van buitenlandse sleutels in SQLite

  4. SQLiteAssetHelper:Kan de database niet openen om te schrijven (zal alleen-lezen proberen)