sql >> Databasteknik >  >> RDS >> Mysql

Hur man väljer ett dynamiskt tabellnamn

Du öppnar 1 ( och stäng 2 ) . Ta bort den sista:

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

Redigera

det andra påståendet borde förmodligen vara

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

Det fungerar, men inte säker på om det är vad du vill:

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;

Redigera2

Om jag förstod dig rätt letar du efter den enda frågan:

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

Redigera3

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;

SQLFiddle-exempel




  1. Hur man definierar en primärnyckel för automatisk ökning i SQL Server

  2. MySQL - GROUP BY med ORDER DESC fungerar inte

  3. Oracle-sekvens som börjar med 2 istället för 1

  4. Inkludera tabeller och scheman när du listar identitetskolumnerna i en SQL Server-databas