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

Транспонирайте ред в колони с MySQL, без да използвате UNIONS?

Взех това от книгата Изкуството на SQL , стр. 284-286:

Да приемем, че името на вашата таблица е foo .

Първо създайте таблица, наречена pivot :

CREATE Table pivot (
  count int
);

Вмъкнете в тези таблици толкова редове, колкото има колони, които искате да завъртите в foo . Тъй като имате три колони в foo които искате да завъртите, създайте три реда в обобщената таблица:

insert into pivot values (1);
insert into pivot values (2);
insert into pivot values (3);

Сега направете декартово присъединяване между foo и pivot , като използвате CASE за да изберете правилната колона въз основа на броя:

SELECT foo.id, Case pivot.count
  When 1 Then cat
  When 2 Then one_above
  When 3 Then top_level
End Case
FROM foo JOIN pivot;

Това трябва да ви даде това, което искате.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Изберете всички, където [първата буква започва с B]

  2. Има ли FIND_IN_SET по индекс в MySQL?

  3. Как да попълним таблици на зони в mysql база данни в ubuntu с xampp

  4. Как да броим елементи в списъка, разделен със запетая, MySQL

  5. Как да свържете flutter към mysql база данни на localhost