Tja, jag måste erkänna att det tog ett tag för mig att förstå vad du frågar om. Tabell2 har 7 kolumner s0 till s6 och du vill få värdet från kolumnen som matchar datumet. Ja?
Så, naturligtvis med hjälp av
SELECT CURRENT_DATE(), s2
ger dig innehållet i s2, medan
SELECT CURRENT_DATE(), CONCAT('s',DAYOFWEEK(CURRENT_DATE())-1)
ger dig 's2'. Det vore hemskt om inte. Förväntar du dig verkligen att DBMS ska beräkna ett värde och sedan kontrollera om det värdet råkar matcha ett kolumnnamn? Sedan
select name, job from person;
skulle välja personens namn och jobb i de flesta fall men för personen som heter Job skulle du få jobbet två gånger istället. Du ser att detta inte kan önskas, eller hur?
Så kontrollera ditt uttrycksresultat istället och läs från motsvarande kolumn:
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;