sql >> Database >  >> RDS >> Mysql

Hoe kan ik CONCAT tijdens SELECT in MySQL als kolomnaam gebruiken?

Nou, ik moet toegeven dat het even duurde voordat ik begreep wat je vraagt. Tabel2 heeft 7 kolommen s0 tot s6 en u wilt de waarde halen uit de kolom die overeenkomt met de datum. Ja?

Dus natuurlijk met

SELECT CURRENT_DATE(), s2

geeft u de inhoud van s2, terwijl

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

geeft u 's2'. Het zou verschrikkelijk zijn als dat niet zo was. Verwacht je echt dat het DBMS een waarde berekent en vervolgens controleert of die waarde toevallig overeenkomt met een kolomnaam? Dan

select name, job from person;

zou in de meeste gevallen de naam en baan van de persoon selecteren, maar voor de persoon met de naam Job zou je de baan in plaats daarvan twee keer krijgen. Je ziet dat dit niet te wensen is, toch?

Dus controleer in plaats daarvan uw uitdrukkingsresultaat en lees uit de overeenkomstige kolom:

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. mysql-syntaxis op niet gelijk aan veel waarden

  2. Hoe gebruik je een dynamische parameter in een IN-clausule van een JPA-query met de naam?

  3. postgresql - sql - aantal `echte` waarden

  4. MySQL key_len begrijpen in Explain Statement