Mysql
 sql >> Base de données >  >> RDS >> Mysql

Comment puis-je utiliser CONCAT pendant SELECT dans MySQL comme nom de colonne ?

Eh bien, je dois admettre que j'ai mis du temps à comprendre ce que vous demandez. Table2 a 7 colonnes s0 à s6 et vous voulez obtenir la valeur de la colonne correspondant à la date. Oui ?

Donc, bien sûr en utilisant

SELECT CURRENT_DATE(), s2

vous donne le contenu de s2, alors que

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

vous donne 's2'. Ce serait horrible sinon. Vous attendez-vous vraiment à ce que le SGBD calcule une valeur, puis vérifie si cette valeur correspond à un nom de colonne ? Alors

select name, job from person;

sélectionnerait le nom et le travail de la personne dans la plupart des cas, mais pour la personne nommée Job, vous obtiendriez le travail deux fois à la place. Vous voyez que cela ne peut pas être souhaité, n'est-ce pas ?

Vérifiez donc le résultat de votre expression à la place et lisez dans la colonne correspondante :

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;