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

表Aの複数のエントリ(指定されたリスト)に関連する表Bのすべてのエントリを取得します

    As(ALL Asではない)のリストに基づいて選択する場合は、次のようにします。

    SELECT b_id
    FROM ab
    WHERE a_id IN (1,2)
    GROUP BY b_id
    HAVING COUNT(a_id) = 2
    

    (1,2)を置き換えます リストと2 リストアイテムの数を含むhaving句で。

    サブクエリからAsのリストを取得する場合は、そのようにすることができます(ただし、MySQLではできません...):

    WITH subquery (
     --subquery code here
    )
    
    SELECT b_id
    FROM ab
    WHERE a_id IN subquery
    GROUP BY b_id
    HAVING COUNT(a_id) = (SELECT COUNT(*) FROM subquery)
    

    MySQLでは、サブクエリコードを2回入力し、WITH句を削除する必要があります。

    一時テーブルを使用することもできます。これにより、その一時テーブルから[すべての名前]が選択され、GordonLinoffsが回答します...



    1. クラウド内のPostgreSQLクラスターのほぼゼロのダウンタイム自動アップグレード(パートI)

    2. INSERT INTO ON DUPLICATEKEYUPDATEに内部結合とwhere句を追加する

    3. MySQLのMAX、MIN、およびAVG関数と一緒にMEDIANを使用する

    4. Grails:列挙型のmysqlフィールドをドメインクラスにマップします