Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Jak mogę użyć CONCAT podczas SELECT w MySQL jako nazwy kolumny?

Cóż, muszę przyznać, że chwilę zajęło mi zrozumienie, o co prosisz. Tabela 2 ma 7 kolumn od s0 do s6 i chcesz uzyskać wartość z kolumny pasującej do daty. Tak?

Więc oczywiście używając

SELECT CURRENT_DATE(), s2

daje zawartość s2, podczas gdy

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

daje 's2'. Byłoby strasznie, gdyby nie. Czy naprawdę oczekujesz, że DBMS obliczy wartość, a następnie sprawdzi, czy ta wartość pasuje do nazwy kolumny? Następnie

select name, job from person;

w większości przypadków wybrałbyś nazwisko i stanowisko tej osoby, ale w przypadku osoby o imieniu Job zamiast tego dostałbyś tę pracę dwukrotnie. Widzisz, że to nie może być pożądane, prawda?

Zamiast tego sprawdź wynik wyrażenia i przeczytaj z odpowiedniej kolumny:

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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. mysql_escape_string cała tablica postów?

  2. Zagregowana suma obiektów JSON w MySQL

  3. Masowa aktualizacja Sqlalchemy w MySQL działa bardzo wolno

  4. Wiele formularzy i jeden odbiornik PHP

  5. MySQL UPDATE z SELECT SUM z innej tabeli