sql >> Database teknologi >  >> RDS >> Mysql

Skal konvertere kolonner til rækker i MYSQL

Kan være nedenfor løsning hjælper dig med at løse dit problem, du skal gøre nogle ændringer i henhold til din tabel struktur.

For denne løsning skal du lave en lagret procedure.

Hvis dette er din tabelstruktur :

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;

Nedenstående løsning virker, hvis ovenstående er din tabelstruktur.

   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;

Foretag ændringer i henhold til din tabelstruktur.

Denne løsning er også nyttig for flere tabeller, jeg håber, at dette kan hjælpe dig med at løse dit problem.




  1. Hvordan grupperer jeg på kontinuerlige områder

  2. Reducer databasekald for at forbedre webstedets ydeevne

  3. Sådan søger du i datofeltet for en streng ved hjælp af JPA Criteria API

  4. 2 måder at slette duplikerede rækker i SQLite