Dette ser ud til at fungere ud fra en hurtig test, jeg lige har lavet, og undgår behovet for at kontrollere eksistensen af x=1
to gange.
SELECT SQL_CALC_FOUND_ROWS *
FROM mytable
WHERE x = 1
UNION ALL
SELECT *
FROM mytable
WHERE
FOUND_ROWS() = 0 AND x = 2;
Rediger:Efter din afklaring af spørgsmålet skal de 2 forespørgsler naturligvis være UNION-kompatible for at ovenstående virker.
Svaret på dit opdaterede spørgsmål er nej. Dette er ikke muligt i en enkelt forespørgsel. Du skal bruge en vis betinget procedurelogik for at udføre den ønskede forespørgsel.