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

¿Cómo puedo usar CONCAT durante SELECT en MySQL como nombre de columna?

Bueno, debo admitir que me tomó un tiempo entender lo que estás preguntando. Table2 tiene 7 columnas s0 a s6 y desea obtener el valor de la columna que coincide con la fecha. ¿Sí?

Entonces, por supuesto usando

SELECT CURRENT_DATE(), s2

le da el contenido de s2, mientras que

SELECT CURRENT_DATE(), CONCAT('s',DAYOFWEEK(CURRENT_DATE())-1)

te da 's2'. Sería horrible si no. ¿Realmente espera que el DBMS calcule un valor y luego verifique si ese valor coincide con el nombre de una columna? Entonces

select name, job from person;

seleccionaría el nombre y el trabajo de la persona en la mayoría de los casos, pero para la persona llamada Trabajo, en su lugar, obtendría el trabajo dos veces. Ya ves que esto no se puede desear, ¿verdad?

Por lo tanto, verifique el resultado de su expresión y lea de la columna correspondiente:

insert into table_1 (datum, comment)
select 
  current_date(), 
  case dayofweek(current_date()) - 1 
    when 0 then s0
    when 1 then s1
    when 2 then s2
    when 3 then s3
    when 4 then s4
    when 5 then s5
    when 6 then s6
  end
from table_2 where id = 12345;