Rumah > pangkalan data > tutorial mysql > Mengapa MySQL WHERE IN () Tidak Mengembalikan Padanan ID Berbilang Apabila Menggunakan Jenis Data SET?

Mengapa MySQL WHERE IN () Tidak Mengembalikan Padanan ID Berbilang Apabila Menggunakan Jenis Data SET?

Mary-Kate Olsen
Lepaskan: 2024-11-04 17:52:01
asal
442 orang telah melayarinya

Why Doesn't MySQL WHERE IN () Return Multiple ID Matches When Using SET Data Type?

MySQL WHERE IN () Tidak Mengembalikan Padanan ID Berbilang

Dalam MySQL, klausa WHERE IN () digunakan untuk menapis hasil berdasarkan senarai nilai yang ditentukan. Walau bagaimanapun, apabila lajur jadual mengandungi berbilang nilai, ia mungkin tidak mengembalikan baris yang sepadan dengan semua nilai yang ditentukan.

Pertimbangkan pertanyaan berikut:

SELECT * FROM table WHERE id IN (1, 2, 3, 4);
Salin selepas log masuk

Pertanyaan ini mendapatkan semula semua baris di mana lajur id adalah bersamaan dengan 1, 2, 3 atau 4. Walau bagaimanapun, jika baris mengandungi lebih daripada satu nilai ini, ia mungkin tidak dikembalikan.

Untuk memahami sebabnya, adalah penting untuk ambil perhatian bahawa IN klausa diterjemahkan kepada keadaan ATAU logik:

SELECT * FROM table WHERE id='1' OR id='2' OR id='3' OR id='4';
Salin selepas log masuk

Ini bermakna hanya baris yang sepadan dengan tepat satu daripada nilai yang ditentukan akan dikembalikan.

Penyelesaian Menggunakan Jenis Data SET dan FIND_IN_SET

Satu cara untuk menyelesaikan isu ini ialah menukar jenis data lajur id kepada jenis data SET. Dalam lajur SET, berbilang nilai boleh disimpan sebagai senarai dipisahkan koma.

Setelah jenis data ditukar kepada SET, anda boleh menggunakan fungsi FIND_IN_SET untuk mendapatkan semula baris berdasarkan nilai tertentu:

SELECT * FROM table WHERE FIND_IN_SET('1', id);
Salin selepas log masuk

Pertanyaan ini akan mengembalikan semua baris di mana lajur id mengandungi nilai 1, tidak kira sama ada ia mengandungi nilai lain juga.

Atas ialah kandungan terperinci Mengapa MySQL WHERE IN () Tidak Mengembalikan Padanan ID Berbilang Apabila Menggunakan Jenis Data SET?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan