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




sql concatener les valeurs d'une colonne (2)

Eh bien, je dois admettre qu'il m'a fallu du temps pour comprendre ce que vous demandez. La table 2 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 réellement que le SGBD calcule une valeur et vérifie ensuite si cette valeur correspond au nom d'une colonne? alors

select name, job from person;

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

Vérifiez donc votre résultat d'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;

Quelqu'un peut-il me dire comment je peux utiliser un résultat d'un CONCAT comme nom de colonne pendant SELECT? Ma tentative ressemble à ceci:

INSERT INTO `table_1` (datum, comment)
SELECT CURRENT_DATE(), CONCAT('s',DAYOFWEEK(CURRENT_DATE())-1)
FROM `table_2` WHERE id = 12345

Par conséquent, j'obtiens s0 - s6 comme une valeur dans mon champ de commentaire au lieu de la valeur qui est réellement dans ma deuxième table dont je veux lire la valeur de: /

funfact: Si je tape simplement dans s0 (à titre d'exemple, fonctionne avec tous les 7) au lieu de la CONCAT, cela fonctionne très bien et j'obtiens la valeur réelle que je veux.

Merci pour votre aide.


Vous pouvez utiliser comme ça

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 






concat