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

Jak vybrat z názvu dynamické tabulky

Otevřete 1 ( a zavřete 2 ) . Odebrat poslední:

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

Upravit

druhý příkaz by pravděpodobně měl být

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

To funguje, ale nejsem si jistý, jestli je to to, co chcete:

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;

Upravit2

Pokud jsem vám dobře rozuměl, hledáte tento jediný dotaz:

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

Upravit3

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;

Příklad SQLFiddle




  1. Jaký je v SQL / MySQL rozdíl mezi ON a WHERE v příkazu spojení?

  2. Řízení výkonu pro PostgreSQL s HAProxy

  3. VYBERTE řádky MySQL, kde je dnešní datum mezi dvěma sloupci DATE

  4. Přednášky:Vylepšení dělení v PostgreSQL 11