Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Làm cách nào để sử dụng CONCAT trong khi SELECT trong MySQL làm tên cột?

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;


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL nhị phân so với phi nhị phân cho các ID băm

  2. Không thể chuyển đổi giá trị ngày / giờ của MySQL thành System.DateTime. Không thể lưu trữ giá trị 0/0/0000 0:00:00?

  3. MySQL ALTER TABLE thêm cột:lỗi ở cột khác

  4. Cách sử dụng MySql trên Mac

  5. Làm thế nào để chạy một chương trình java trên một máy chủ?