Mysql
 sql >> база данни >  >> RDS >> Mysql

Как мога да използвам CONCAT по време на SELECT в MySQL като име на колона?

Е, трябва да призная, че ми отне известно време, за да разбера какво питате. Таблица2 има 7 колони от s0 до s6 и искате да получите стойността от колоната, съответстваща на датата. Да?

Така че, разбира се, използвайки

SELECT CURRENT_DATE(), s2

ви дава съдържанието на s2, докато

SELECT CURRENT_DATE(), CONCAT('s',DAYOFWEEK(CURRENT_DATE())-1)

дава 's2'. Би било ужасно, ако не. Наистина ли очаквате СУБД да изчисли стойност и след това да провери дали тази стойност съвпада с име на колона? След това

select name, job from person;

ще избере името и работата на лицето в повечето случаи, но за лицето на име Работа ще получите работата два пъти вместо това. Виждате, че това не може да се желае, нали?

Така че вместо това проверете резултата от израза си и прочетете от съответната колона:

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 с помощта на CONCAT

  2. Как да генерирате фрагмента като тези, генерирани от Google с PHP и MySQL?

  3. Spring JDBC шаблон - Как да извлечете множество резултати с множество параметри с една заявка

  4. Цикълът while и for не работи

  5. Създаване на високодостъпна база данни за Moodle с помощта на MySQL репликация