sql >> Base de Datos >  >> RDS >> Mysql

MySQL concat () para crear nombres de columna para usar en una consulta?

Anteriormente dije que esto no se podía hacer, pero estaba equivocado. Terminé necesitando algo como esto, así que miré a mi alrededor y descubrí que declaraciones preparadas del lado del servidor le permite crear y ejecutar sentencias SQL arbitrarias a partir de cadenas.

Aquí hay un ejemplo que acabo de hacer para probar el concepto:

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
;