Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

perbedaan antara where_in dan find_in_set

WHERE IN membutuhkan kumpulan nilai untuk ditentukan secara harfiah dalam kueri, bukan sebagai nilai tunggal yang berisi string yang dipisahkan koma. Jika Anda menulis:

WHERE 6 IN (a.allowed_activity)

itu akan memperlakukan a.allowed_activity hanya sebagai satu nilai, dan bandingkan dengan 6 , bukan sebagai kumpulan beberapa nilai untuk ditelusuri.

FIND_IN_SET mencari string yang dipisahkan koma untuk nilainya.

Cara lain untuk melihatnya adalah IN adalah jalan pintas untuk sekumpulan = tes yang dikombinasikan dengan OR :

WHERE x IN (a, b, c, d)

kependekan dari

WHERE x = a OR x = b OR x = c OR x = d

Saat Anda menulis ulang seperti ini, Anda dapat melihat dengan jelas mengapa itu tidak bekerja dengan kolom yang berisi string yang dipisahkan koma. Ini hanya menerjemahkan

WHERE 6 IN (a.allowed_activity) 

ke:

WHERE 6 = a.allowed_activity


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jenis di MySQL:BigInt(20) vs Int(20)

  2. kesalahan:perintah 'x86_64-linux-gnu-gcc' saat menginstal mysqlclient

  3. Apakah MySQL mengabaikan nilai nol pada batasan unik?

  4. Perbandingan Antara Plugin Klon MySQL dan Xtrabackup

  5. Sampel Acak Sederhana dari database Sql