sql >> Database teknologi >  >> RDS >> Mysql

Hvordan kan jeg bruge CONCAT under SELECT i MySQL som et kolonnenavn?

Nå, jeg må indrømme, at det tog mig et stykke tid at forstå, hvad du spørger om. Tabel2 har 7 kolonner s0 til s6, og du ønsker at få værdien fra kolonnen, der matcher datoen. Ja?

Så selvfølgelig ved at bruge

SELECT CURRENT_DATE(), s2
 

giver dig indholdet af s2, hvorimod

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

giver dig 's2'. Det ville være forfærdeligt, hvis ikke. Forventer du virkelig, at DBMS beregner en værdi og derefter kontrollere, om denne værdi tilfældigvis matcher et kolonnenavn? Så

select name, job from person;
 

ville vælge personens navn og job i de fleste tilfælde, men for personen ved navn Job ville du få jobbet to gange i stedet. Du kan se, at dette ikke kan ønskes, vel?

Så tjek i stedet dit udtryksresultat og læs fra den tilsvarende kolonne:

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. Parametriserede forespørgsler med psycopg2 / Python DB-API og PostgreSQL

  2. hvad er forskellen mellem Clustered Index og Unique Index?

  3. MySQL Limit med mange til mange forhold

  4. R2DBC og enum (PostgreSQL)