Maison  >  Article  >  base de données  >  Comment créer un tableau croisé dynamique dans MySQL avec des noms de colonnes entiers ?

Comment créer un tableau croisé dynamique dans MySQL avec des noms de colonnes entiers ?

Linda Hamilton
Linda Hamiltonoriginal
2024-11-16 18:51:03258parcourir

How to Create a Dynamic Pivot Table in MySQL with Integer Column Names?

Tableau croisé dynamique MySQL avec noms de colonnes entiers

Créer un tableau croisé dynamique dynamique avec des noms de colonnes entiers dans MySQL pose un léger défi. Lors de l'exécution de la requête fournie, vous pouvez rencontrer une erreur si les valeurs user_id sont des nombres entiers. Pour résoudre ce problème, nous devons envelopper les valeurs user_id dans des backticks (`).

La requête SQL ajustée ressemble à ceci :

SET @sql = NULL;
SELECT
  GROUP_CONCAT(DISTINCT
    CONCAT(
      'max(case when user_id = ''',
      user_id,
      ''' then score end) AS `',
      user_id, '`'
    )
  ) INTO @sql
FROM  measure2;

SET @sql = CONCAT('SELECT inspection_date, ', @sql, ' 
                  FROM measure2 
                  GROUP BY inspection_date');

PREPARE stmt FROM @sql;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;

La modification clé ici est l'ajout de backticks autour des valeurs user_id dans l'instruction GROUP_CONCAT. En faisant cela, nous nous assurons que les valeurs user_id sont traitées comme des chaînes au lieu de noms de colonnes.

Démo SQL Fiddle : https://sqlfiddle.com/#!2/eab24/ 4

Maintenant, même avec des valeurs user_id entières, le tableau croisé dynamique sera généré avec succès.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn