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

MySQL-複数のハッシュタグを持つすべてのアイテムを選択します

    あなたはあなたのリストをよく知っているので、それは単純な文字列です。そしてあなたはあなたの数を知っています。これらはmysqlのPrepared Statementに詰め込まれる可能性があります 実行されました。

    ただし、その下には、デモの目的でリストとカウントが追加されています。

    create table items
    (   id int not null
    );
    
    create table tags
    (   id int not null,
        name varchar(50)
    );
    
    create table item_tags
    (   iid int not null,
        tid int not null
    );
    
    insert items (id) values (1),(2),(3),(4);
    insert tags(id,name) values (1,'cat'),(2,'animal'),(3,'has nose');
    -- note, everything has a nose so far:
    insert item_tags (iid,tid) values (1,1),(1,3),(2,1),(2,3),(3,2),(3,3),(4,1),(4,2),(4,3);
    
    select i.id,count(i.id)
    from items i
    join item_tags junc
    on junc.iid=i.id
    join tags t
    on t.id=junc.tid and t.name in ('cat','animal')
    group by i.id
    having count(i.id)=2
    
    -- only item 4 has both cat and animal (note nose is irrelevant)
    


    1. PHPでSQLクエリの実行を停止するにはどうすればよいですか?

    2. MySQLが存在しない場合はデータベースを作成します

    3. 複数のスレッド間で1つのmysql接続を共有するにはどうすればよいですか?

    4. mysqlutf8mb4_unicode_ciは一意のキーの衝突を引き起こします