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

MySql tham gia nhiều bảng với số hàng khác nhau

Với dữ liệu của bạn, truy vấn này sẽ trả về những gì bạn muốn:

SELECT t1.*,
       GROUP_CONCAT(t2.info SEPARATOR '|') AS info,
       GROUP_CONCAT(t2.data SEPARATOR '|') AS data
FROM table1 t1 LEFT JOIN
     join j
     ON j.id_a = t1.id_a LEFT JOIN
     table2 t2
     ON t2.id_b = j.id_b
WHERE t1.id_a = ?
GROUP BY t1.id_a;

Nếu muốn, bạn có thể xóa các bản sao bằng DISTINCT :

SELECT t1.*,
       GROUP_CONCAT(DISTINCT t2.info SEPARATOR '|') AS info,
       GROUP_CONCAT(DISTINCT t2.data SEPARATOR '|') AS data
FROM table1 t1 LEFT JOIN
     join j
     ON j.id_a = t1.id_a LEFT JOIN
     table2 t2
     ON t2.id_b = j.id_b
WHERE t1.id_a = ?
GROUP BY t1.id_a;

Tuy nhiên, thông thường, tốt hơn là nên sửa truy vấn để nó không tạo ra các bản sao.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Làm cách nào để chỉ định trường truy vấn mẹ từ bên trong một truy vấn con trong MySQL?

  2. MySQL:So sánh sự khác biệt giữa hai bảng

  3. Tại sao tôi có NullPointerException ở đây?

  4. mysqldump trả về mã 6 khi chạy từ java, nhưng lệnh tương tự hoạt động tốt từ dòng lệnh

  5. c ++ kết nối mysql bad_alloc sử dụng trình kết nối c ++