sql >> Databasteknik >  >> RDS >> Mysql

hämta 3 rader varje dag om du planerar för 1 år

Du kan använda dense_rank() och aritmetik för att sätta raderna i grupper om 3:

select b.*,
       ceiling(dense_rank() over (order by id) / 3)
from bibles b

Frågan är då hur man får tag i datumen. Baserat på ditt exempel kan detta vara:

select b.*,
       '2020-02-23' + interval ( ceiling(dense_rank() over (order by id) / 3) - 1) day
from bibles b;

Men - 1 beror på vad den första raden är i resultatuppsättningen. Om du vill att den ska börja på 365, då:

select b.*,
       '2020-02-23' + interval ( ceiling(dense_rank() over (order by id) / 3) - 1) day
from bibles b
where id >= 365;



  1. Använd RAND() i användardefinierad funktion

  2. MySQL Workbench Inserts

  3. Hur kan jag infoga 10 miljoner poster på kortast möjliga tid?

  4. Hur REGEXP_LIKE()-funktionen fungerar i MySQL