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

MySql chọn giá trị hàng động làm tên cột

Theo cách tiếp cận của câu hỏi tham khảo về việc sử dụng group_concat bạn có thể làm như vậy, nhưng lưu ý một điều là id công việc của bạn tăng lên mỗi exec_id sau đó nhóm group_concat cách tiếp cận sẽ không tối ưu do độ dài mặc định là 1024 ký tự để ghép và đối với các cột động của bạn, điều này chắc chắn sẽ vượt qua giới hạn đó, nhưng giới hạn này có thể được tăng lên như đã đề cập trong <>>>documentation

SET @sql = NULL;

SELECT GROUP_CONCAT(DISTINCT
  CONCAT('MAX(CASE WHEN job_id = ''',
         job_id, 
         ''' THEN start_time END) `',
         job_id,
         '_start`',
         ',',
         'MAX(CASE WHEN job_id = ''',
         job_id,
         ''' THEN end_time END) `',
         job_id,
         '_end`' 
         )

 )
  INTO @sql
  FROM t;

SET @sql = CONCAT('SELECT exec_id, ', @sql, ' 
                     FROM t 
                    GROUP BY exec_id');

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

Fiddle Demo



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL / SQL:Cập nhật với truy vấn con tương quan từ chính bảng đã cập nhật

  2. mysql trong xampp bắt đầu và dừng sau năm giây

  3. Lỗi MySQL 1170 (42000):Cột BLOB / TEXT được sử dụng trong đặc điểm kỹ thuật chính mà không có độ dài khóa

  4. Cách tốt nhất để quản lý ngày tháng trên PHP, MySQL, v.v. là gì?

  5. Cách xóa một cột khỏi bảng trong MySQL