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

Заявка за обобщена таблица на MySQL с динамични колони, съкращаващи стойността на ключа

Има няколко проблема с вашия код - чрез намаляване на гравитацията:

  • трябва да изберете от z_tmp_admin_system_settings , а не от името
  • колоната за групиране се нарича category , а не поддомейн
  • тъй като принципът на заявката е да използва агрегиране, имате нужда от агрегатни функции за генерираните колони, като например MAX(); старите версии на MySQL толерират неизползването на агрегатна функция върху неагрегирани колони, но това не е нещо, с което трябва да свикнете
  • добра практика е да заобиколите имената на колоните със задни отметки, в случай че едно от имената се сблъска със запазена дума (това не е така във вашите примерни данни, но вероятно не е изчерпателно)
  • ОТЛИЧЕН вероятно не е необходимо, освен ако не сте дублирали име s за категория (в този случай не се колебайте да го добавите обратно към кода по-долу)
  • Странична бележка:IFNULL(..., NULL) е без операция

Код:

SET SESSION group_concat_max_len =100000;SET @sql ='';SELECT GROUP_CONCAT( CONCAT('MAX(IF(z_tmp_admin_system_settings.name =''', name, ''', value, NULL)) AS ` ', име, '`'))INTO @sqlFROM z_tmp_admin_system_settings;SET @sql =CONCAT( 'SELECT category, ', @sql, ' FROM z_tmp_admin_system_settings GROUP BY category');PREPARE stmt FROM @sql;EXECUTE stmt;DEALLOCATE PREPARE stmt; 

Демо на DB Fiddle :

<предварителен код>| категория | 2fa | abc_дата_на_обработка | активиране_ново_одобряване_лице | активиране_нов_план | допълнителен_футер_за_лице || -------- | --- | ------------------- | ---------------------------- | -------------------- | ---------------------------- || акме | 0 | днес | 1 | 1 | |

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Грешка в синтаксиса на MySQL в декларацията на променлива

  2. Как да копирате база данни с mysqldump и mysql в Python?

  3. Изчисляване на медианата с Mysql

  4. файлът не се качва в ajax php mysql

  5. Създаване на таблица с грешка при аритметично препълване