Nou, ik moet toegeven dat het even duurde voordat ik begreep wat je vraagt. Tabel2 heeft 7 kolommen s0 tot s6 en u wilt de waarde halen uit de kolom die overeenkomt met de datum. Ja?
Dus natuurlijk met
SELECT CURRENT_DATE(), s2
geeft u de inhoud van s2, terwijl
SELECT CURRENT_DATE(), CONCAT('s',DAYOFWEEK(CURRENT_DATE())-1)
geeft u 's2'. Het zou verschrikkelijk zijn als dat niet zo was. Verwacht je echt dat het DBMS een waarde berekent en vervolgens controleert of die waarde toevallig overeenkomt met een kolomnaam? Dan
select name, job from person;
zou in de meeste gevallen de naam en baan van de persoon selecteren, maar voor de persoon met de naam Job zou je de baan in plaats daarvan twee keer krijgen. Je ziet dat dit niet te wensen is, toch?
Dus controleer in plaats daarvan uw uitdrukkingsresultaat en lees uit de overeenkomstige kolom:
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;