sql >> Database teknologi >  >> RDS >> Mysql

Sådan vælger du et dynamisk tabelnavn

Du åbner 1 ( og luk 2 ) . Fjern den sidste:

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

Rediger

det andet udsagn burde sandsynligvis være

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

Det virker, men jeg er ikke sikker på, om det er det, du vil have:

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;

Rediger2

Hvis jeg har forstået dig rigtigt, leder du efter den enkelte forespørgsel:

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

Rediger3

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-eksempel




  1. Hvordan trækker man en saltet adgangskode tilbage fra databasen og godkendelsesbrugeren?

  2. Sådan krypterer du en opdelt database i Access 2016

  3. Dynamic Sampling Killing Me i 12c

  4. MySQL-brugerrettigheder på delte servere