Rumah >pangkalan data >tutorial mysql >Bagaimana Menggunakan 'NOT IN' dengan Senarai Nilai dalam MySQL dengan betul?
Apabila cuba mengisi pembolehubah jadual dengan senarai nilai yang dipisahkan koma dan menggunakannya sebagai Penapis "TIDAK MASUK", sekatan jalan biasa timbul. Memahami sintaks yang betul dan had operasi ini adalah penting.
Seperti yang ditunjukkan oleh pertanyaan asal, menetapkan pembolehubah kepada senarai nilai yang dipisahkan koma:
SET @idcamposexcluidos='817,803,495';
dan seterusnya cuba menggunakannya dalam "WHERE NOT IN" syarat:
WHERE id_campo not in (@idcamposexcluidos)
sering mengakibatkan ralat atau hasil yang tidak diingini.
Inti isu ini terletak pada jangkaan klausa IN terhadap nilai yang berbeza. Walau bagaimanapun, menggunakan rentetan yang dipisahkan koma sebagai parameter secara berkesan menyusun kepada rentetan tunggal dalam klausa IN, yang membawa kepada perbandingan yang salah.
Untuk mengatasinya, seseorang mesti sama ada menggunakan SQL dinamik atau menggunakan fungsi FIND_IN_SET() MySQL :
SET @idcamposexcluidos='817,803,495'; ... WHERE FIND_IN_SET(id_campo, @idcamposexcluidos) = 0
Walaupun FIND_IN_SET() menawarkan penyelesaian, ia disertakan dengan pengehadannya. Tidak seperti menggunakan indeks, ia mengalami prestasi yang dipukul dengan memerlukan carian linear melalui senarai nilai.
Atas ialah kandungan terperinci Bagaimana Menggunakan 'NOT IN' dengan Senarai Nilai dalam MySQL dengan betul?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!