sql >> Databasteknik >  >> RDS >> Mysql

Hur kan jag använda CONCAT under SELECT i MySQL som ett kolumnnamn?

Tja, jag måste erkänna att det tog ett tag för mig att förstå vad du frågar om. Tabell2 har 7 kolumner s0 till s6 och du vill få värdet från kolumnen som matchar datumet. Ja?

Så, naturligtvis med hjälp av

SELECT CURRENT_DATE(), s2

ger dig innehållet i s2, medan

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

ger dig 's2'. Det vore hemskt om inte. Förväntar du dig verkligen att DBMS ska beräkna ett värde och sedan kontrollera om det värdet råkar matcha ett kolumnnamn? Sedan

select name, job from person;

skulle välja personens namn och jobb i de flesta fall men för personen som heter Job skulle du få jobbet två gånger istället. Du ser att detta inte kan önskas, eller hur?

Så kontrollera ditt uttrycksresultat istället och läs från motsvarande kolumn:

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. Hur infogar man posten med MySQL NOW()-funktionen i MySQLi med bind_param?

  2. MySQL InnoDB textsökningsalternativ

  3. Returnera alla rader från sub-query SQL?

  4. Viloläge på Oracle:mappa String-egenskapen till CLOB-kolumnen