sql >> データベース >  >> RDS >> Mysql

複数のタグを持つ行を選択してください...より良い方法はありますか?

    複数の結合を行う必要はありません。すべてのタグを一致させる必要がある場合は、INを使用できます 次のようなサブクエリを含む句:

    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
    )
    

    一致する一意のタグの数になるように2を調整する必要があることに注意してください。これがユーザーが入力したデータであり、同じタグを2回入力する場合は注意してください。



    1. MySQL動的JOIN

    2. MySQLタイムゾーンクエリ

    3. Hibernateを使用してMySQLで自動インクリメントの主キー値を取得する方法

    4. SQLテーブル内でフレーズを検索する方法