sql >> Databáze >  >> RDS >> Mysql

Jak mohu použít CONCAT během SELECT v MySQL jako název sloupce?

No, musím přiznat, že mi chvíli trvalo, než jsem pochopil, na co se ptáte. Tabulka2 má 7 sloupců s0 až s6 a vy chcete získat hodnotu ze sloupce, který odpovídá datu. Ano?

Takže samozřejmě pomocí

SELECT CURRENT_DATE(), s2

vám dává obsah s2, zatímco

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

vám dává 's2'. Bylo by to hrozné, kdyby ne. Opravdu očekáváte, že DBMS vypočítá hodnotu a poté zkontroluje, zda se tato hodnota náhodou shoduje s názvem sloupce? Potom

select name, job from person;

by ve většině případů vybral jméno osoby a zaměstnání, ale pro osobu jménem Job byste místo toho dostali zakázku dvakrát. Vidíte, že to nelze chtít, že?

Zkontrolujte tedy výsledek svého výrazu a čtěte z příslušného sloupce:

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. Co jsou dočasné tabulky MariaDB?

  2. Chyba vložení php + mysql

  3. Migrace Laravel 4:instalace ErrorException

  4. SQLAlchemy Core - generování PostgreSQL výrazu SUBSTRING?