Detta verkar fungera utifrån ett snabbtest jag just gjorde och undviker behovet av att kontrollera om det finns x=1
dubbelt.
SELECT SQL_CALC_FOUND_ROWS *
FROM mytable
WHERE x = 1
UNION ALL
SELECT *
FROM mytable
WHERE
FOUND_ROWS() = 0 AND x = 2;
Edit:Efter ditt förtydligande av frågan måste uppenbarligen de två frågorna vara UNION-kompatibla för att ovanstående ska fungera.
Svaret på din uppdaterade fråga är nej. Detta är inte möjligt i en enda fråga. Du skulle behöva använda någon villkorlig procedurlogik för att utföra önskad fråga.