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)