Mysql
 sql >> Base de données >  >> RDS >> Mysql

MySQL concat() pour créer des noms de colonnes à utiliser dans une requête ?

J'ai déjà dit que cela ne pouvait pas être fait, mais j'avais tort. J'ai fini par avoir besoin de quelque chose comme ça moi-même, alors j'ai regardé autour de moi et j'ai découvert que instructions préparées côté serveur vous permet de créer et d'exécuter des instructions SQL arbitraires à partir de chaînes.

Voici un exemple que je viens de faire pour prouver le concept :

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
;