さて、あなたが何を求めているのかを理解するのに時間がかかったことを認めなければなりません。 Table2にはs0からs6までの7つの列があり、日付に一致する列から値を取得する必要があります。はい?
したがって、もちろん
を使用しますSELECT CURRENT_DATE(), s2
s2のコンテンツを提供しますが、
SELECT CURRENT_DATE(), CONCAT('s',DAYOFWEEK(CURRENT_DATE())-1)
's2'を与えます。そうでなければ恐ろしいでしょう。 DBMSが値を計算し、その値が列名と一致するかどうかを確認することを本当に期待していますか?次に
select name, job from person;
ほとんどの場合、その人の名前と仕事を選択しますが、Jobという名前の人の場合は、代わりに2回仕事を取得します。これは望ましくないことがわかりますよね?
したがって、代わりに式の結果を確認し、対応する列から読み取ってください:
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;