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

Truy vấn Mysql để chuyển đổi động các hàng thành cột

Bạn có thể sử dụng GROUP BYMAX để mô phỏng trục. MySQL cũng hỗ trợ IF tuyên bố.

SELECT  ID,
        MAX(IF(`order` = 1, data, NULL)) data1,
        MAX(IF(`order` = 2, data, NULL)) data2
FROM    TableA
GROUP   BY ID

Nếu bạn có nhiều giá trị của order , SQL động có thể thích hợp hơn để bạn không phải sửa đổi truy vấn:

SET @sql = NULL;
SELECT
  GROUP_CONCAT(DISTINCT
    CONCAT(
      'MAX(IF(`order` = ', `order`, ',data,NULL)) AS data', `order`)
  ) INTO @sql
FROM TableName;

SET @sql = CONCAT('SELECT  ID, ', @sql, ' 
                  FROM    TableName
                  GROUP   BY ID');

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

ĐẦU RA CỦA CẢ CÂU HỎI:

╔════╦═══════╦═══════╗
║ ID ║ DATA1 ║ DATA2 ║
╠════╬═══════╬═══════╣
║  1 ║ P     ║ S     ║
║  2 ║ R     ║ Q     ║
╚════╩═══════╩═══════╝


  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ìm kiếm MySQL trong danh sách dấu phẩy

  2. Chọn giá trị phổ biến nhất từ ​​một trường trong MySQL

  3. Làm cách nào để cài đặt MySQLdb (thư viện truy cập dữ liệu Python vào MySQL) trên Mac OS X?

  4. Làm thế nào để gọi một thủ tục được lưu trữ MySQL từ bên trong mã PHP?

  5. Lưu trữ tệp trong cơ sở dữ liệu hệ thống tệp Vs