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

Buat kueri MySQL ( tabel meta_key/meta_value)

Saya suka mendekati ini menggunakan group by dan having :

select id
from t
where (meta_key = 'color' and meta_value = 'red') or
      (meta_key = 'price' and meta_value = '10')
group by id
having count(distinct meta_key) = 2;

Alternatifnya adalah join . Jika tidak ada nilai duplikat untuk id :

select id
from t tc join
     t tp
     on tc.id = tp.id and
        tc.meta_key = 'color' and tc.meta_value = 'red' and
        tp.meta_key = 'price' and tp.meta_value = '10';

group by metode memiliki keunggulan skalabilitas dan ekspresibilitas. Sangat mudah untuk mengekspresikan banyak kondisi (warna tidak merah, diproduksi di AS atau Cina) yang bukan persamaan sederhana. Selain itu, kondisi tambahan memiliki kinerja yang sangat mirip.

Yang kedua mungkin berkinerja lebih baik (dengan indeks yang tepat) pada beberapa kondisi.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. masuk sebagai pengguna atau admin dari 2 tabel berbeda

  2. MySQL menjatuhkan semua indeks dari tabel

  3. Mengapa tidak menonaktifkan ONLY_FULL_GROUP_BY

  4. Cara:Membersihkan mesin penyimpanan InnoDB mysql?

  5. Bagaimana memodelkan hubungan tiga arah dalam layanan mikro JPA Spring Boot dengan back end MySQL