"Si un trabajador quiere hacer bien su trabajo, primero debe afilar sus herramientas." - Confucio, "Las Analectas de Confucio. Lu Linggong"
Página delantera > Programación > Guía de creación dinámica dinámica de MySQL: ID de usuario entero

Guía de creación dinámica dinámica de MySQL: ID de usuario entero

Publicado el 2025-04-13
Navegar:591

How to Create Dynamic Pivot Tables in MySQL with Integer User IDs?

Pivot Tablas en MySQL con columnas dinámicas

esta pregunta aborda el desafío de crear tablas dinámicas mysql con columnas dinámicas. Mientras que la solución funciona de manera efectiva cuando user_id se define como una cadena, falla cuando se encuentra con los valores enteros.

El fragmento de código proporcionado ilustra el intento inicial de crear la tabla de pivote. Sin embargo, para resolver el problema relacionado con los valores enteros user_id, las correcciones se encuentran en la forma en que los nombres de la columna se construyen dentro de la consulta SQL dinámica.

el código original:

...
GROUP_CONCAT(DISTINCT
    CONCAT(
      'max(case when user_id = ''',
      user_id,
      ''' then score end) AS ',
      user_id
    )
  ) INTO @sql

int user_id Los valores están en causar el problema ya que se usan directamente como nombres de columnas. Para abordar esto, estos valores deben envolverse en backticks (`). El código corregido ajusta esto:

...
GROUP_CONCAT(DISTINCT
    CONCAT(
      'max(case when user_id = ''',
      user_id,
      ''' then score end) AS `',
      user_id, '`'
    )
  ) INTO @sql

la consulta final, corregida:

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;

Con estos ajustes, la tabla de pivote ahora se puede generar con éxito incluso cuando se trata de valores de user_id integer.

Último tutorial Más>

Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.

Copyright© 2022 湘ICP备2022001581号-3