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

`in`句にすべての値を持つ列のみでクエリを結合します

    これを行うには、IDを配列に集約し、それを目的のIDのリストと比較します。

    select v.*
    from venues v
      join amenity_venue av ON av.venue_id = v.id
    group by v.id
    having array_agg(av.amenity_id) @> array['aaa', 'bbb'];
    

    上記はvenue.idを前提としています 主キーとして宣言されています(group byのため) )。

    アメニティ名を渡すだけの場合は、クエリでIDをハードコーディングする必要はありません。

    select v.*
    from venues v
      join amenity_venue av ON av.venue_id = v.id
    group by v.id
    having array_agg(av.amenity_id) @> array(select id 
                                             from amenities 
                                             where name in ('first amenity', 'second amenity'));
    

    オンラインの例:https://rextester.com/FNNVXO34389



    1. MySQL –エラーの修正–WordPressデータベースエラークエリのキーPRIMARYの重複エントリINSERTINTO wp_options

    2. Spring Hibernate Templateのexecuteメソッドは、Oracleでのカウントクエリに対してどのオブジェクトタイプを返しますか?

    3. MySQLでテーブル名として数字を使用することは許可されていますか?

    4. LINQ to SQL Take w / o Skipは、複数のSQLステートメントを引き起こします