Mysql
 sql >> Database >  >> RDS >> Mysql

MySQL concat() per creare nomi di colonna da utilizzare in una query?

In precedenza ho detto che questo non poteva essere fatto, ma mi sbagliavo. Ho finito per aver bisogno di qualcosa di simile anch'io, quindi mi sono guardato intorno e ho scoperto che dichiarazioni preparate lato server ti consente di creare ed eseguire istruzioni SQL arbitrarie da stringhe.

Ecco un esempio che ho appena fatto per dimostrare il concetto:

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
;