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

MySQLを使用して2つのコンマ区切りの文字列リストを比較する方法

    配列が単一の列であることを除いて、配列の共通部分を実行したいようです。それは可能ですが、遅く、デバッグが難しく、リレーショナルデータベースの力を活用できません。より良い方法は、テーブルスキーマを次のようなものに変更することです。

    テーブルグループ

    group_id int unsigned not null auto_increment primary key,
    character_list text
    

    テーブルmembers_in_group

    group_id int unsigned not null,
    group_member varchar(45) not null
    

    次に、次のようにクエリできます:

    SELECT group_id, character_list
    FROM groups g 
      JOIN members_in_groups m USING (group_id)
    WHERE m.group_member IN ('Mr. T', ...);
    

    groups テーブルはおそらく現在のテーブルと非常によく似ています。 members_in_groups 表は、簡単に検索できる部分に切り刻まれた同じデータです。

    ETAがあなたのコメントを与えた場合、これはの場合に機能するはずです。 各character_list 1つのみが含まれています 各キャラクターのインスタンス:

    SELECT group_id, 
           SUM(CASE m.group_member IN ('Mr. T', 'Apollo', 'Rocky') THEN 1 ELSE 0 END) AS tally, 
           character_list
    FROM groups g
      JOIN members_in_groups m ON (g.group_id=m.group_id)
    GROUP BY group_id
      HAVING SUM(CASE m.group_member IN ('Mr. T', 'Apollo', 'Rocky') THEN 1 ELSE 0 END) = 3;
    

    この場合、HAVING IN ('Mr. T', 'Apollo', 'Rocky')には3つのメンバーがあるため、句は3に等しくなければなりません。 。



    1. MySQL(パフォーマンスとストレージ)でNULL

    2. MySQLi PHP:MySQLiを使用してSQLINSERTクエリが完全に成功したかどうかを確認します

    3. エクセルvbamysqlado接続

    4. C#を使用してXMLファイルをMySQLにロードする最速の方法は何ですか?