FIND_IN_SET() vs IN(): Memahami Perbezaan dalam MySQL
Soalan:
Dalam MySQL, kami mempunyai dua jadual: "pesanan" dan "syarikat." Lajur "attachedCompanyIDs" dalam "pesanan" menyimpan senarai ID yang dipisahkan koma yang merujuk baris dalam "syarikat." Apabila membuat pertanyaan untuk nama syarikat yang dikaitkan dengan pesanan menggunakan FIND_IN_SET(), kami mendapat hasil yang dijangkakan. Walau bagaimanapun, menggunakan IN() sebaliknya hanya mengembalikan syarikat padanan pertama. Mengapa ini berlaku?
Jawapan:
Lajur attachedCompanyIDs ialah nilai skalar jenis VARCHAR. Apabila menggunakan IN(), MySQL menghantar rentetan kepada integer, memotongnya pada aksara bukan angka pertama (iaitu, koma). Ini bermakna jika attachedCompanyIDs mengandungi berbilang nilai, hanya yang pertama akan dipertimbangkan untuk perbandingan IN.
解决方法:
Bergantung pada senario khusus anda, terdapat beberapa penyelesaian untuk ini isu:
Pertimbangan Tambahan:
Atas ialah kandungan terperinci MySQL FIND_IN_SET() vs IN(): Mengapa IN() Hanya Mengembalikan Padanan Pertama dengan ID Dipisahkan Koma?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!