Eh bien, je dois admettre que j'ai mis du temps à comprendre ce que vous demandez. Table2 a 7 colonnes s0 à s6 et vous voulez obtenir la valeur de la colonne correspondant à la date. Oui ?
Donc, bien sûr en utilisant
SELECT CURRENT_DATE(), s2
vous donne le contenu de s2, alors que
SELECT CURRENT_DATE(), CONCAT('s',DAYOFWEEK(CURRENT_DATE())-1)
vous donne 's2'. Ce serait horrible sinon. Vous attendez-vous vraiment à ce que le SGBD calcule une valeur, puis vérifie si cette valeur correspond à un nom de colonne ? Alors
select name, job from person;
sélectionnerait le nom et le travail de la personne dans la plupart des cas, mais pour la personne nommée Job, vous obtiendriez le travail deux fois à la place. Vous voyez que cela ne peut pas être souhaité, n'est-ce pas ?
Vérifiez donc le résultat de votre expression à la place et lisez dans la colonne correspondante :
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;