Cóż, muszę przyznać, że chwilę zajęło mi zrozumienie, o co prosisz. Tabela 2 ma 7 kolumn od s0 do s6 i chcesz uzyskać wartość z kolumny pasującej do daty. Tak?
Więc oczywiście używając
SELECT CURRENT_DATE(), s2
daje zawartość s2, podczas gdy
SELECT CURRENT_DATE(), CONCAT('s',DAYOFWEEK(CURRENT_DATE())-1)
daje 's2'. Byłoby strasznie, gdyby nie. Czy naprawdę oczekujesz, że DBMS obliczy wartość, a następnie sprawdzi, czy ta wartość pasuje do nazwy kolumny? Następnie
select name, job from person;
w większości przypadków wybrałbyś nazwisko i stanowisko tej osoby, ale w przypadku osoby o imieniu Job zamiast tego dostałbyś tę pracę dwukrotnie. Widzisz, że to nie może być pożądane, prawda?
Zamiast tego sprawdź wynik wyrażenia i przeczytaj z odpowiedniej kolumny:
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;