Vâng, tôi phải thừa nhận rằng tôi đã mất một thời gian để hiểu những gì bạn đang hỏi. Table2 có 7 cột s0 đến s6 và bạn muốn lấy giá trị từ cột khớp với ngày. Có?
Vì vậy, tất nhiên bằng cách sử dụng
SELECT CURRENT_DATE(), s2
cung cấp cho bạn nội dung của s2, trong khi
SELECT CURRENT_DATE(), CONCAT('s',DAYOFWEEK(CURRENT_DATE())-1)
cung cấp cho bạn 's2'. Nó sẽ rất kinh khủng nếu không. Bạn có thực sự mong đợi DBMS tính toán một giá trị và sau đó kiểm tra xem giá trị đó có khớp với tên cột không? Sau đó
select name, job from person;
sẽ chọn tên và công việc của người đó trong hầu hết các trường hợp nhưng đối với người có tên Job, thay vào đó bạn sẽ nhận được công việc hai lần. Bạn thấy rằng điều này không thể mong muốn, phải không?
Vì vậy, hãy kiểm tra kết quả biểu thức của bạn thay vào đó và đọc từ cột theo:
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;