Ini tampaknya berfungsi dari tes cepat yang baru saja saya lakukan dan menghindari kebutuhan untuk memeriksa keberadaan x=1
dua kali.
SELECT SQL_CALC_FOUND_ROWS *
FROM mytable
WHERE x = 1
UNION ALL
SELECT *
FROM mytable
WHERE
FOUND_ROWS() = 0 AND x = 2;
Sunting:Mengikuti klarifikasi Anda untuk pertanyaan, jelas 2 kueri harus kompatibel dengan UNION agar hal di atas berfungsi.
Jawaban atas pertanyaan Anda yang diperbarui adalah Tidak. Ini tidak mungkin dilakukan dalam satu kueri. Anda perlu menggunakan beberapa logika prosedural bersyarat untuk mengeksekusi kueri yang diinginkan.