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

Jak wybrać z dynamicznej nazwy tabeli

Otwierasz 1 ( i zamknij 2 ) . Usuń ostatnie:

SELECT CONCAT('changes',year,month) FROM changes

Edytuj

drugie stwierdzenie powinno prawdopodobnie brzmieć

SET @x := SELECT * FROM (@b) as b;

To działa, ale nie jestem pewien, czy tego chcesz:

SET @b := 'SELECT CONCAT(''changes'',`year`,`month`) FROM whichchanges';
SET @x := 'SELECT * FROM (SELECT CONCAT(''changes'',`year`,`month`) FROM whichchanges) as b';
Prepare stmt FROM @b;
Prepare stmt FROM @x;
Execute stmt;

Edytuj2

Jeśli dobrze zrozumiałem, szukasz tego pojedynczego zapytania:

select * from changes
where change_column in (select distinct concat(`year`, `month`) from whichchanges)

Edytuj3

select @b := group_concat(concat(' select * from changes', `year`, `month`, ' union ') separator ' ') as w from whichchanges;
set @b := left(@b, length(@b) - 6);

Prepare stmt FROM @b;
Execute stmt;

Przykład SQLFiddle




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Różnica między SET autocommit=1 i START TRANSACTION w mysql (Czy coś przeoczyłem?)

  2. Jak wyłączyć innodb w mysql?

  3. Połącz się ze zdalnym serwerem MySQL za pomocą SSL z PHP

  4. Czy istnieje odpowiednik Profilera dla MySQL?

  5. Jak dodać dwa wyniki count(*) razem na dwóch różnych tabelach?