Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

MySQL concat() para criar nomes de colunas a serem usados ​​em uma consulta?


Eu disse anteriormente que isso não poderia ser feito, mas eu estava errado. Acabei precisando de algo assim, então olhei em volta e descobri que declarações preparadas do lado do servidor permitem construir e executar instruções SQL arbitrárias a partir de strings.

Aqui está um exemplo que acabei de fazer para provar o conceito:
set @query := (
  select concat(
    "select",
      group_concat(concat("\n  1 as ", column_name) separator ','),
    "\nfrom dual")
  from information_schema.columns
  where table_name = 'columns')
;
prepare s1 from @query
;
execute s1
;
deallocate prepare s1
;