"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Guia de criação dinâmico mysql dinâmico: ID de usuário inteiro

Guia de criação dinâmico mysql dinâmico: ID de usuário inteiro

Postado em 2025-04-13
Navegar:250

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

tabelas Pivot em mysql com colunas dinâmicas

Esta pergunta aborda o desafio de criar tabelas mysql pivot com colunas dinâmicas. Embora a solução funcione de maneira eficaz quando o user_id é definido como uma string, ela falha ao encontrar valores inteiros. No entanto, para resolver o problema relacionado aos valores inteiros user_id, as correções estão na maneira como os nomes das colunas são construídos dentro da consulta sql dinâmica. Group_concat (distinto Concat ( 'Max (caso quando user_id =' '', ID do usuário, '' 'então pontue final) como', ID do usuário ) ) Em @sql

int user_id Os valores estão causando o problema, pois estão sendo usados ​​diretamente como nomes de colunas. Para resolver isso, esses valores precisam ser embrulhados em backticks (`). O código corrigido ajusta o seguinte:

... Group_concat (distinto Concat ( 'Max (caso quando user_id =' '', ID do usuário, '' 'então pontue final) como `', user_id, '`' ) ) Em @sql

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

set @sql = null; Selecione Group_concat (distinto Concat ( 'Max (caso quando user_id =' '', ID do usuário, '' 'então pontue final) como `', user_id, '`' ) ) Em @SQL Da medida2; Set @sql = concat ('selecione inspeção_date,', @sql, ' Da medida2 Grupo por inspeção_date '); Prepare o STMT do @SQL; Executar sTMT; Deallocate Prepare STMT;

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

Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.

Copyright© 2022 湘ICP备2022001581号-3