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

他のレコードの特定のセットに関連付けられているレコードを照合するにはどうすればよいですか?

    これを実現する方法はいくつかあります。1つは、結果をグループ化してHAVINGを使用することです。 個別のタグの数を比較するには

    $query = $this->Users
        ->find()
        ->matching('Tags', function ($query) {
            return $query->where(['Tags.name IN' => ['Tag1', 'Tag2']]);
        })
        ->group('Users.id')
        ->having([
            $this->Users->query()->newExpr('COUNT(DISTINCT Tags.name) = 2')
        ]);
    

    これにより、2つの異なるタグを持つユーザーのみが選択されます。タグはTag1のみです。 およびTag2 参加しているのはこれらだけだからです。nameの場合 列は一意であるため、代わりに主キーを使用できます。

    IN ところで。基本的にORと同じです 条件(データベースシステムはINを展開します ORへ それに応じた条件)。




    1. MariaDBを使用したLDAP認証とグループマッピングの構成

    2. .sqlファイルpostgresの画面に印刷

    3. SQLServerにIPアドレスを格納するためのデータ型

    4. ExecuteBatchメソッドは、Javaで値-2の配列を返します