Понякога трябва да транспонирате колони в редове или да отмените завъртане на таблицата в 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-дневен безплатен пробен период.