Rumah >pangkalan data >tutorial mysql >Mengapa Pertanyaan MySQL IN() Tidak Mengembalikan Baris dengan Berbilang ID Padanan?

Mengapa Pertanyaan MySQL IN() Tidak Mengembalikan Baris dengan Berbilang ID Padanan?

Susan Sarandon
Susan Sarandonasal
2024-11-04 16:38:02852semak imbas

Why Doesn't MySQL IN() Query Return Rows with Multiple Matching IDs?

MySQL IN () Isu Pertanyaan untuk Rekod Multi-ID

Apabila melaksanakan pertanyaan:

SELECT * FROM table WHERE id IN (1,2,3,4);

kepada mendapatkan semula data berdasarkan berbilang ID, anda mungkin menghadapi masalah di mana baris yang mengandungi berbilang ID yang sepadan tidak dikembalikan. Pertanyaan ini diterjemahkan kepada:

SELECT * FROM table WHERE id='1' or id='2' or id='3' or id='4';

yang mengambil hanya baris yang sepadan dengan mana-mana ID tunggal dalam set.

Penyelesaian: Menggunakan SET Datatype

Untuk menangani had ini, anda boleh mempertimbangkan untuk mengubah jenis data lajur id kepada SET. Ini membolehkan anda menyimpan berbilang nilai dalam satu lajur. Selepas membuat perubahan ini, anda boleh menggunakan fungsi FIND_IN_SET dalam pertanyaan anda:

SELECT * FROM table WHERE FIND_IN_SET('1', id);

Pertanyaan ini akan mengembalikan semua baris yang mengandungi '1' sebagai salah satu nilai dalam lajur id, tanpa mengira sebarang nilai lain hadir. Ini menyediakan cara yang lebih fleksibel untuk memadankan rekod dengan berbilang ID.

Atas ialah kandungan terperinci Mengapa Pertanyaan MySQL IN() Tidak Mengembalikan Baris dengan Berbilang ID Padanan?. 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