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

Chuyển đổi tập kết quả MySQL từ hàng thành cột

Mmmm ... EAV. Một trong nhiều lý do để tránh EAV (giá trị_thực thể-thuộc tính) là chúng khó báo cáo và truy vấn hơn. Tuy nhiên, nếu các thuộc tính bạn muốn được biết trước, bạn có thể làm như sau:

Select id
    , Min( Case When name = 'Make' Then attribute_value End ) As Make
    , Min( Case When name = 'Year' Then attribute_value End ) As Year
    , Min( Case When name = 'Type' Then attribute_value End ) As Type
    , Min( Case When name = 'Axles' Then attribute_value End ) As Axles
    , Min( Case When name = 'Size' Then attribute_value End ) As Size
    , Min( Case When name = 'Frame' Then attribute_value End ) As Frame
    , ...
From attributes
Where name In('Make','Year','Type','Axles','Size','Frame',....)
Group By id

Bây giờ, MySQL, có GROUP_CONCAT sẽ cho phép bạn nối nhiều giá trị cho cùng một thuộc tính vào một danh sách nếu bạn cho phép điều đó (ví dụ:nếu một thực thể có thể có nhiều thuộc tính Make).



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Giữ dữ liệu cộng với dữ liệu chỉ mục trong bộ nhớ - InnoDB so với MyISAM

  2. Đặt trường để tự động chèn dấu thời gian khi CẬP NHẬT?

  3. Làm thế nào để chạy một ứng dụng Java bằng MySQL DB trên một máy tính mà không cần cài đặt MySQL?

  4. Có thể có một cột MySQL chứa nhiều giá trị làm khóa ngoại không?

  5. Sử dụng bí danh cột trong mệnh đề WHERE của truy vấn MySQL tạo ra lỗi