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

Как да отмените завъртане на таблицата в MySQL

Понякога трябва да транспонирате колони в редове или да отмените завъртане на таблицата в MySQL. Тъй като MySQL няма функция за ОТКЛЮЧВАНЕ или ОБРАЩАНЕ НА ОБОРОТНАТА таблица, трябва да напишете SQL заявка за транспониране на колони в редове. Ето как да отмените завъртане на таблицата в MySQL.

Как да премахнете завъртането на таблицата в MySQL

Да приемем, че имате следната обобщена таблица

mysql>създайте данни от таблица(id int, a varchar(255), b varchar(255), c varchar(255));mysql>вмъкнете в данни(id,a,b,c) стойности(1,' a1','b1','c1'),(2,'a1','b1','c1');mysql>избере * от данни;+------+------+ ------+------+| ID | а | б | c |+------+------+------+------+| 1 | a1 | b1 | c1 || 2 | a1 | b1 | c1 |+------+------+------+------+

Да приемем, че искате да отмените завъртане на таблицата в MySQL към следното.

<пред>1 | a1 | a1 | b1 | b1 | c1 | c2 | а2 | а2 | b2 | b2 | c2 | в

Бонус четене: Как да създадете динамични обобщени таблици в MySQL

Отмяна на завъртане на таблицата в MySQL

Ето заявката за извършване на unpivot в SQL. Тъй като MySQL не предлага функция UNPIVOT, трябва да използвате клауза UNION ALL, за да обърнете завъртане на таблица в MySQL.

mysql> изберете идентификатор, 'a' col, стойност от обединение на данни всички изберете идентификатор, 'b' col, b стойност от обединение на данни всички изберете идентификатор, 'c' col, c стойност от данни;+--- ---+-----+-------+| ID | кол | стойност |+------+-----+-------+| 1 | а | a1 || 2 | а | a1 || 1 | б | b1 || 2 | б | b1 || 1 | в | c1 || 2 | в | c1 |+------+-----+-------+

В горната заявка ние основно нарязваме оригиналната таблица на 3 по-малки – по една за всяка колона a,b,c и след това ги добавяме една под друга с помощта на UNION ALL.

Ако искате да филтрирате редове, можете да добавите клауза WHERE, както е показано по-долу

mysql> изберете идентификатор, 'a' col, стойност от данни условие WHERE съюз всички изберете идентификатор, 'b' col, b стойност от данни условие WHERE съюз всички изберете идентификатор, 'c' col, c стойност от данни условие WHERE;

Бонус за четене: Как да транспонирате редове в колони динамично в MySQL

За съжаление, това е досадно, но един от единствените 2 начина за премахване на завъртане в MySQL. Другият включва извършване на кръстосано свързване, както е показано по-долу.

mysql> изберете t.id, c.col, case c.col когато 'a', след това a, когато 'b', след това b, когато 'c', след това c край като данни от данни t кръстосано присъединяване ( изберете 'a' като col union all select 'b' union all select 'c' ) c;+------+-----+------+| ID | кол | данни |+------+-----+------+| 1 | а | a1 || 2 | а | a1 || 1 | б | b1 || 2 | б | b1 || 1 | в | c1 || 2 | в | c1 |+------+-----+------+

Бонус за четене:Как да автоматизирате заявките за обобщена таблица в MySQL

Можете да персонализирате горната заявка, за да отмените завъртане на таблицата в MySQL, като използвате клауза WHERE. Можете също да използвате инструмент за отчитане, за да начертаете резултата в таблица. Ето пример за таблица, създадена с Ubiq.

Ако искате да създадете централни таблици, диаграми и табла за управление от MySQL база данни, можете да опитате Ubiq. Предлагаме 14-дневен безплатен пробен период.

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Свържете Metabase с MySQL за изследване на данни

  2. MySQL:Бърза разбивка на видовете съединения

  3. Как да задам параметри ORDER BY, използвайки подготвен PDO израз?

  4. Времето за изчакване на фиксиране на заключване е превишено; опитайте да рестартирате транзакцията за „заседнала Mysql таблица?

  5. MySQL изтрива дублиращи се записи, но запазва най-новите