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

Come posso utilizzare CONCAT durante SELECT in MySQL come nome di colonna?

Bene, devo ammettere che mi ci è voluto un po' per capire cosa stai chiedendo. Table2 ha 7 colonne da s0 a s6 e si desidera ottenere il valore dalla colonna corrispondente alla data. Sì?

Quindi, ovviamente usando

SELECT CURRENT_DATE(), s2

ti dà il contenuto di s2, mentre

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

ti dà 's2'. Sarebbe orribile se così non fosse. Ti aspetti davvero che il DBMS calcoli un valore e quindi controlli se quel valore corrisponde al nome di una colonna? Allora

select name, job from person;

selezionerebbe il nome e il lavoro della persona nella maggior parte dei casi, ma per la persona denominata Job otterresti invece il lavoro due volte. Vedi che questo non si può desiderare, vero?

Quindi controlla invece il risultato dell'espressione e leggi dalla colonna corrispondente:

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;