Mysql
 sql >> база данни >  >> RDS >> Mysql

Необходимо е да конвертирате колони в редове в MYSQL

Възможно е решението по-долу да ви помогне да решите проблема си, трябва да направите някои промени според структурата на вашата таблица.

За това решение трябва да направите съхранена процедура.

Ако това е вашата структура на таблицата:

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;

Решението по-долу работи, ако по-горе е структурата на вашата таблица.

   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;

Направете промени според структурата на вашата таблица.

Това решение е полезно и за множество таблици, надявам се, че това може да ви помогне да решите проблема си.




  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 Group By с горен N номер от всеки вид

  2. mysql избере int като валута или преобразува int във валутен формат?

  3. MySQL Docker контейнерът не записва данни в ново изображение

  4. Как да осигуря връзка с база данни mysql в един файл в nodejs

  5. MySQL Невалиден UTF8 символен низ при импортиране на csv таблица