Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Como posso usar CONCAT durante SELECT no MySQL como um nome de coluna?


Bem, devo admitir que demorei um pouco para entender o que você está perguntando. A Tabela2 tem 7 colunas s0 a s6 e você deseja obter o valor da coluna correspondente à data. Sim?

Então, é claro, usando
SELECT CURRENT_DATE(), s2

fornece o conteúdo de s2, enquanto
SELECT CURRENT_DATE(), CONCAT('s',DAYOFWEEK(CURRENT_DATE())-1)

dá-lhe 's2'. Seria horrível se não. Você realmente espera que o DBMS calcule um valor e, em seguida, verifique se esse valor corresponde a um nome de coluna? Então
select name, job from person;

selecionaria o nome e o trabalho da pessoa na maioria dos casos, mas para a pessoa chamada Job você obteria o trabalho duas vezes. Você vê que isso não pode ser desejado, certo?

Portanto, verifique o resultado da sua expressão e leia a coluna correspondente:
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;