Nun, ich muss zugeben, ich habe eine Weile gebraucht, um zu verstehen, was Sie fragen. Tabelle2 hat 7 Spalten s0 bis s6 und Sie möchten den Wert aus der Spalte erhalten, die dem Datum entspricht. Ja?
Also natürlich mit
SELECT CURRENT_DATE(), s2
gibt Ihnen den Inhalt von s2, wohingegen
SELECT CURRENT_DATE(), CONCAT('s',DAYOFWEEK(CURRENT_DATE())-1)
gibt dir 's2'. Es wäre schrecklich, wenn nicht. Erwarten Sie wirklich, dass das DBMS einen Wert berechnet und dann überprüft, ob dieser Wert zufällig mit einem Spaltennamen übereinstimmt? Dann
select name, job from person;
würde in den meisten Fällen den Namen und den Job der Person auswählen, aber für die Person mit dem Namen Job würden Sie den Job stattdessen zweimal bekommen. Sie sehen, dass dies nicht erwünscht sein kann, oder?
Überprüfen Sie also stattdessen Ihr Ausdrucksergebnis und lesen Sie in der entsprechenden Spalte nach:
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;