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.