sql >> Databáze >  >> RDS >> Mysql

Vyberte řádky s více značkami... existuje lepší způsob?

Není třeba provádět více připojení. Pokud potřebujete porovnat všechny značky, můžete použít IN klauzule s poddotazem, jako je tento:

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
)

Všimněte si, že budete muset upravit číslo 2 tak, aby odpovídalo počtu jedinečných značek, se kterými se shodujete. Dejte si pozor v případě, že se jedná o data zadaná uživatelem a uživatel zadá stejnou značku dvakrát.



  1. Jak zvýšit SQL pomocí triggeru?

  2. FUNCTION SUM neexistuje

  3. Čekáte na dokončení odeslané úlohy v Oracle PL/SQL?

  4. XML výstup z MySQL