Nå, jeg må indrømme, at det tog mig et stykke tid at forstå, hvad du spørger om. Tabel2 har 7 kolonner s0 til s6, og du ønsker at få værdien fra kolonnen, der matcher datoen. Ja?
Så selvfølgelig ved at bruge
SELECT CURRENT_DATE(), s2
giver dig indholdet af s2, hvorimod
SELECT CURRENT_DATE(), CONCAT('s',DAYOFWEEK(CURRENT_DATE())-1)
giver dig 's2'. Det ville være forfærdeligt, hvis ikke. Forventer du virkelig, at DBMS beregner en værdi og derefter kontrollere, om denne værdi tilfældigvis matcher et kolonnenavn? Så
select name, job from person;
ville vælge personens navn og job i de fleste tilfælde, men for personen ved navn Job ville du få jobbet to gange i stedet. Du kan se, at dette ikke kan ønskes, vel?
Så tjek i stedet dit udtryksresultat og læs fra den tilsvarende kolonne:
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;