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

mysqlはコンマ区切りのIDで2つのテーブルを結合します

    FIND_IN_SET()を使用できます およびGROUP_CONCAT() これについて

    SELECT  b.Group_ID, GROUP_CONCAT(a.name) name
    FROM    Table2 b
            INNER JOIN Table1 a
                ON FIND_IN_SET(a.ID, b.Group_ID) > 0
    GROUP   BY b.Group_ID
    

    出力

    ╔══════════╦═════════════════╗
    ║ GROUP_ID ║      NAME       ║
    ╠══════════╬═════════════════╣
    ║ 1        ║ Person1         ║
    ║ 2,3      ║ Person2,Person3 ║
    ╚══════════╩═════════════════╝
    

    補足として、このクエリは期待どおりに効率的に実行されない可能性があります。カンマで区切られた値を保存しないことにより、テーブルを適切に正規化してください。

    更新

    GROUP_ID かなり紛らわしいです。 PersonIDListではありませんか ?とにかく、これが私の提案するスキーマ設計です:

    PERSONテーブル

    • PersonID(PK)
    • PersonName
    • 他の列..

    グループテーブル

    • GroupID(PK)
    • グループ名
    • 他の列..

    PERSON_GROUPテーブル

    • PersonID(FK)(同時に列GroupIDを持つPK)
    • GroupID(FK)


    1. MySQLのメモリ使用率が高いかどうかを確認する方法

    2. 特定の行番号から始まるMySQLの行を選択するにはどうすればよいですか?

    3. mysqlデータベースにギリシャ文字を正しく挿入できません

    4. Unixソケットを使用したJDBCMySQL接続