Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

mysql bergabung dengan dua tabel dengan id yang dipisahkan koma

Anda dapat menggunakan FIND_IN_SET() dan GROUP_CONCAT() ini,

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

KELUARAN

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

Sebagai catatan tambahan, kueri ini mungkin tidak bekerja secara efisien seperti yang diharapkan. Harap normalkan tabel Anda dengan benar dengan tidak menyimpan nilai yang dipisahkan oleh koma.

PERBARUI

GROUP_ID cukup membingungkan. Bukan PersonIDList ? Bagaimanapun, inilah desain skema yang saya sarankan:

Tabel PERSON

  • PersonID (PK)
  • Nama Orang
  • kolom lain..

Tabel GRUP

  • ID Grup (PK)
  • Nama Grup
  • kolom lain..

Tabel PERSON_GROUP

  • PersonID (FK) (bersamaan PK dengan kolom GroupID)
  • IDGrup (FK)


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Pustaka tidak dimuat:kesalahan libmysqlclient.16.dylib saat mencoba menjalankan 'rails server' di OS X 10.6 dengan permata mysql2

  2. Fungsi agregat array MYSQL seperti PostgreSQL array_agg

  3. Menyimpan stempel waktu di tabel mysql menggunakan php

  4. Cara Menggunakan Pernyataan KASUS di MySQL

  5. MySQL - abaikan kesalahan penyisipan:entri duplikat