Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Musisz przekonwertować kolumny na wiersze w MYSQL

Poniżej może być rozwiązanie, które pomoże Ci rozwiązać problem, musisz wprowadzić pewne zmiany zgodnie ze strukturą tabeli.

W tym rozwiązaniu musisz utworzyć procedurę składowaną.

Jeśli taka jest Twoja struktura tabeli :

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;

Poniższe rozwiązanie działa, jeśli powyżej znajduje się struktura tabeli.

   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;

Wprowadź zmiany zgodnie ze strukturą tabeli.

To rozwiązanie jest również pomocne przy wielu stołach. Mam nadzieję, że pomoże ci to rozwiązać problem.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Czy ktoś odkrył, że REGEX \b nie działa w MYSQL?

  2. Korzystanie z Union All i Order By w MySQL

  3. Sprawdź PHP pod kątem NULL

  4. jak ustawić pracę django i mysql z UTF-8?

  5. Jak tworzyć fantomowe odczyty?