Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

mysql tham gia hai bảng với các id được phân tách bằng dấu phẩy

Bạn có thể sử dụng FIND_IN_SET()GROUP_CONCAT() về điều này,

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

ĐẦU RA

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

Là một chú thích phụ, truy vấn này có thể không hoạt động hiệu quả như mong đợi. Vui lòng chuẩn hóa bảng của bạn đúng cách bằng cách không lưu các giá trị được phân tách bằng dấu phẩy.

CẬP NHẬT

GROUP_ID là khá nhiều khó hiểu. Phải không PersonIDList ? Dù sao, đây là thiết kế giản đồ được đề xuất của tôi:

Bảng PERSON

  • ID người (PK)
  • Tên người
  • các cột khác ..

Bảng NHÓM

  • GroupID (PK)
  • Tên nhóm
  • các cột khác ..

Bảng PERSON_GROUP

  • PersonID (FK) (đồng thời PK với cột GroupID)
  • GroupID (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. Tách giá trị từ một trường thành hai trường

  2. Django + MySQL - Trang web quản trị - Thêm người dùng - Lỗi hoạt động - SAVEPOINT không tồn tại

  3. làm thế nào để hiểu không thể kết nối thông báo lỗi mysql?

  4. mysql - hôm nay nằm giữa hai giá trị cột

  5. Sequelize BulongCreate () trả về giá trị NULL cho khóa chính