Rumah >pangkalan data >tutorial mysql >Bagaimanakah Saya Boleh Melaksanakan Pertanyaan SELECT Kedua dengan Cekap dalam MySQL Hanya jika Pertanyaan Pertama Mengembalikan Baris Sifar?

Bagaimanakah Saya Boleh Melaksanakan Pertanyaan SELECT Kedua dengan Cekap dalam MySQL Hanya jika Pertanyaan Pertama Mengembalikan Baris Sifar?

Patricia Arquette
Patricia Arquetteasal
2024-12-25 07:34:33898semak imbas

How Can I Efficiently Execute a Second SELECT Query in MySQL Only if the First Query Returns Zero Rows?

Pertanyaan PILIH Bersyarat: Melaksanakan Pertanyaan Alternatif Berdasarkan Kiraan Baris

Untuk mengoptimumkan skrip PHP anda, anda sedang mencari kaedah untuk melaksanakan secara dinamik pertanyaan SELECT kedua hanya apabila pertanyaan pertama mengembalikan sifar baris. Begini cara anda boleh mencapai ini dalam MySQL:

Satu pendekatan ialah menggunakan pernyataan IF bersarang untuk membandingkan kiraan baris daripada pertanyaan pertama:

IF (SELECT COUNT(*) FROM proxies WHERE A='B') > 0
  THEN SELECT * FROM proxies WHERE A='B'
ELSEIF (SELECT COUNT(*) FROM proxies WHERE A='C') > 0
  THEN SELECT * FROM proxies WHERE A='C'
END IF

Walau bagaimanapun, kaedah ini melaksanakan setiap pertanyaan dua kali untuk setiap syarat. Untuk pengoptimuman yang lebih baik, pertimbangkan untuk menggunakan UNION ALL dengan operator EXISTS:

SELECT *
FROM proxies
WHERE A='B'
UNION ALL
SELECT *
FROM proxies
WHERE A='C' AND NOT EXISTS (
  SELECT 1
  FROM proxies
  WHERE A='B'
)

Pertanyaan ini mula-mula akan mencari baris dengan A='B' dan mengembalikannya. Jika tiada baris dengan A='B' ditemui, ia kemudiannya akan mengambil baris dengan A='C', memastikan hanya satu pertanyaan dilaksanakan.

Demo SQL Fiddle boleh didapati di sini: [Pautan]

Pendekatan ini melaksanakan pertanyaan kedua dengan cekap hanya apabila pertanyaan pertama mengembalikan sifar baris, memberikan prestasi yang lebih baik untuk PHP anda skrip.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Melaksanakan Pertanyaan SELECT Kedua dengan Cekap dalam MySQL Hanya jika Pertanyaan Pertama Mengembalikan Baris Sifar?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn