Rumah >pangkalan data >tutorial mysql >Bolehkah UNION ALL dengan LIMIT 1 Mensimulasikan Pertanyaan Berjujukan dengan Cekap?
Pertanyaan Selektif Berurutan Menggunakan UNION ALL
Masalah:
Mencari satu baris dalam jadual pangkalan data dengan kriteria carian dikurangkan secara berperingkat. Contohnya:
PILIH * DARI imej DI MANA nama LIKE 'teks' DAN group_id = 10 HAD 1
Jika tiada hasil diperoleh, laksanakan:
PILIH * DARI imej DI MANA nama LIKE 'teks' HAD 1
Jika masih tiada hasil, laksanakan:
SELECT * FROM image WHERE group_id = 10 LIMIT 1
Bolehkah proses ini dilakukan dengan satu ungkapan?
Penyelesaian:
SELECT * FROM image WHERE name = 'name105' AND group_id = 10 UNION ALL SELECT * FROM image WHERE name = 'name105' UNION ALL SELECT * FROM image WHERE group_id = 10 LIMIT 1;
Penjelasan:
Penyelesaian Generik:
Pendekatan di atas boleh digeneralisasikan untuk sebarang bilangan parameter carian dengan menambahkan pernyataan SELECT tambahan pada rantai UNION ALL.
Pertimbangan untuk Keputusan Isih:
Sejak Klausa LIMIT digunakan pada keseluruhan hasil, pengisihan tidak begitu berguna kerana hanya baris pertama akan dikembalikan.
Atas ialah kandungan terperinci Bolehkah UNION ALL dengan LIMIT 1 Mensimulasikan Pertanyaan Berjujukan dengan Cekap?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!