Apabila cuba mengecualikan nilai tertentu dalam pertanyaan MySQL menggunakan senarai "NOT IN", berikan pembolehubah kepada nilai yang dikecualikan boleh menjadi penyelesaian yang mudah. Walau bagaimanapun, memastikan format pembolehubah yang betul adalah penting.
Seperti yang diterangkan dalam pertanyaan anda, anda cuba memberikan pembolehubah '@idcamposexcluidos' dengan format yang berbeza:
Walau bagaimanapun, tiada satu pun daripada format ini berfungsi seperti yang diharapkan. Sebabnya ialah klausa "IN" memerlukan nilai yang berasingan, bukan satu rentetan. Oleh itu, pertanyaan:
WHERE id_campo not in (@idcamposexcluidos)
berkesan menjadi:
WHERE id_campo not in ('817,803,495')
yang tidak betul. Nilai harus disediakan sebagai literal rentetan yang berasingan:
WHERE id_campo not in ('817','803','495')
Untuk mengatasi isu ini, terdapat dua pilihan:
SET @idcamposexcluidos='817,803,495'; ... WHERE FIND_IN_SET(id_campo, @idcamposexcluidos) = 0
Perhatikan bahawa menggunakan Fungsi FIND_IN_SET() mungkin menjejaskan penggunaan indeks.
Atas ialah kandungan terperinci Bagaimana Memformat Pembolehubah MySQL dengan Betul untuk Digunakan dalam Klausa 'TIDAK DALAM'?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!