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

Truy vấn bảng tổng hợp MySQL với các cột động

Cách duy nhất trong MySQL để thực hiện điều này một cách linh hoạt là với các câu lệnh Chuẩn bị. Đây là một bài viết hay về họ:

Bảng tổng hợp động (chuyển đổi hàng thành cột)

Mã của bạn sẽ giống như sau:

SET @sql = NULL;
SELECT
  GROUP_CONCAT(DISTINCT
    CONCAT(
      'MAX(IF(pa.fieldname = ''',
      fieldname,
      ''', pa.fieldvalue, NULL)) AS ',
      fieldname
    )
  ) INTO @sql
FROM product_additional;

SET @sql = CONCAT('SELECT p.id
                    , p.name
                    , p.description, ', @sql, ' 
                   FROM product p
                   LEFT JOIN product_additional AS pa 
                    ON p.id = pa.id
                   GROUP BY p.id, p.name, p.description');

PREPARE stmt FROM @sql;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;

Xem Demo

LƯU Ý:Hàm GROUP_CONCAT có giới hạn 1024 ký tự. Xem tham số group_concat_max_len



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. PDO mysql:Làm thế nào để biết liệu chèn thành công

  2. Neo4j - Xóa nút bằng Cypher

  3. Giải thích về khung khả dụng cao của MySQL - Phần II:Sao chép bán đồng bộ

  4. Cấp quyền cho người dùng MySQL trên Linux thông qua dòng lệnh

  5. Khôi phục cơ sở dữ liệu mysql từ các tệp .frm