Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Müssen Spalten in Zeilen in MYSQL konvertieren

Möglicherweise hilft Ihnen die folgende Lösung bei der Lösung Ihres Problems. Sie müssen einige Änderungen gemäß Ihrer Tabellenstruktur vornehmen.

Für diese Lösung müssen Sie eine gespeicherte Prozedur erstellen.

Wenn dies Ihre Tabellenstruktur ist:

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;

Die folgende Lösung funktioniert, wenn oben Ihre Tabellenstruktur ist.

   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;

Nehmen Sie Änderungen gemäß Ihrer Tabellenstruktur vor.

Diese Lösung ist auch für mehrere Tabellen hilfreich. Ich hoffe, dies kann Ihnen helfen, Ihr Problem zu lösen.