sql >> Databasteknik >  >> RDS >> Mysql

Välj rader med flera taggar... finns det ett bättre sätt?

Du behöver inte göra flera anslutningar. Om du behöver matcha alla taggar kan du använda en IN sats med en underfråga som denna:

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
)

Observera att du måste justera siffran 2 för att vara antalet unika taggar du matchar på. Se upp om detta är användarinmatad data och de anger samma tagg två gånger.



  1. hur man använder multiple join sql-fråga i java spring boot

  2. Mysql - Arkivering av data, vilken lösning ska jag använda?

  3. MySQL Server har försvunnit vid import av stor sql-fil

  4. Att ändra ORDER BY från id till en annan indexerad kolumn (med låg LIMIT) har en enorm kostnad