Rumah >pangkalan data >tutorial mysql >Bagaimana Menggunakan 'NOT IN' dengan Senarai Nilai dalam MySQL dengan betul?

Bagaimana Menggunakan 'NOT IN' dengan Senarai Nilai dalam MySQL dengan betul?

Barbara Streisand
Barbara Streisandasal
2025-01-03 12:23:39774semak imbas

How to Correctly Use

Format yang Betul untuk Senarai Nilai "NOT IN" dalam MySQL

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.

Isunya

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.

Penyelesaian

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!

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