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

Cần chuyển đổi cột thành hàng trong MYSQL

Giải pháp dưới đây có thể giúp bạn giải quyết vấn đề của mình, bạn cần thực hiện một số thay đổi theo cấu trúc bảng của mình.

Đối với giải pháp này, bạn phải thực hiện một quy trình được lưu trữ.

Nếu đây là cấu trúc bảng của bạn:

CREATE TABLE `school` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(500) DEFAULT NULL,
  `value` varchar(45) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=8 DEFAULT CHARSET=utf8;
SET FOREIGN_KEY_CHECKS=1;

Giải pháp bên dưới đang hoạt động nếu bên trên là cấu trúc bảng của bạn.

   SET SESSION group_concat_max_len = (2056 * 2056);

SET @sql = NULL;

SELECT GROUP_CONCAT(DISTINCT
             CONCAT(
               'MAX(CASE WHEN school.name ="',m.name,'"'
                                ' THEN school.value END)"',m.name , '"'))
                                INTO @sql  
                                            from school as m;

SET @sql = CONCAT('SELECT value,',@sql,
                  ' FROM school');


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

Thực hiện các thay đổi theo cấu trúc bảng của bạn.

Giải pháp này cũng hữu ích cho nhiều bảng, tôi hy vọng điều này có thể giúp bạn giải quyết vấn đề của mình.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cách tốt nhất để lưu trữ tin nhắn trò chuyện trong cơ sở dữ liệu?

  2. Cài đặt MySQL:LỖI:Không thể tạo tiện ích mở rộng gốc đá quý

  3. Giám sát hiệu suất MySQL với ClusterControl

  4. Tạo DATETIME từ DATE và TIME

  5. Chén thánh làm sạch đầu vào và đầu ra trong php?