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

MySQL:è possibile "riempire" un SELECT con valori senza una tabella?

Se possibile, cerca di evitare di generare dati al volo. Rende le query molto semplici ridicolmente complesse, ma soprattutto:confonde l'ottimizzatore all'infinito.

Se hai bisogno di una serie di numeri interi, usa una tabella statica di numeri interi. Se hai bisogno di una serie di date, mesi o altro, usa una tabella del calendario. A meno che tu non abbia a che fare con requisiti davvero straordinari, una tabella statica è la strada da percorrere.

Ho fornito un esempio su come creare una tabella di numeri e una tabella di calendario minima (solo date) in questa risposta .

Se disponi di quelle tabelle, diventa facile risolvere la tua query.

  1. Aggrega i dati dell'ordine a MESE.
  2. Unisci a destra alla tabella dei mesi (o MESE distinto dalla tabella delle date)