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

Pilih baris dengan banyak tag... apakah ada cara yang lebih baik?

Tidak perlu melakukan banyak join. Jika Anda perlu mencocokkan semua tag, Anda dapat menggunakan IN klausa dengan subquery seperti ini:

select p.sku, p.name, p.path 
from shop_products p
where p.sku in (
    select pc.product_sku 
    from shop_products_categories pc 
    inner join shop_categories c on pc.category_id = c.id
    where c.path in ('flowers', 'romance')
    group by pc.product_sku
    having count(distinct c.path) = 2
)

Perhatikan bahwa Anda perlu menyesuaikan nomor 2 menjadi jumlah tag unik yang Anda cocokkan. Berhati-hatilah jika ini adalah data yang dimasukkan pengguna dan mereka memasukkan tag yang sama dua kali.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL (atau PHP?) mengelompokkan hasil berdasarkan data lapangan

  2. Membunuh proses mysqld

  3. Batas kondisi MySQL IN

  4. Hapus dari tabel menggunakan kolom tabel lain

  5. Nilai terbesar dari dua atau lebih bidang