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

Vælg en sekvens mellem to tal på MySQL

Noget som dette burde gøre det:-

SELECT a.Name, GROUP_CONCAT(YEAR(DATE_ADD(a.start_date, INTERVAL b.aNum YEAR))) AS activity_years FROM person a CROSS JOIN (SELECT a.i + b.i * 10 AS aNum FROM integers a, integers b) b WHERE YEAR(DATE_ADD(a.start_date, INTERVAL b.aNum YEAR)) <= YEAR(a.end_date) GROUP BY a.Name

Den er afhængig af en tabel med heltal med en kolonne kaldet i, med værdierne 0 til 9. Den forbinder dette med sig selv for at få et talinterval fra 0 til 99, så det kan håndtere datointervaller så langt fra hinanden.

Fjernelse af undervalgene for at bruge det i en visning

SELECT p.Name, GROUP_CONCAT(YEAR(DATE_ADD(p.start_date, INTERVAL (a.i + b.i * 10) YEAR))) AS activity_years FROM person p CROSS JOIN integers a CROSS JOIN integers b WHERE YEAR(DATE_ADD(p.start_date, INTERVAL (a.i + b.i * 10) YEAR)) <= YEAR(p.end_date) GROUP BY p.Name

  1. Bulk Indsæt SQL Server millioner af rekord

  2. MySQL-opdatering med sub select

  3. HTML &PHPMySQL, Indsæt mange data i tabellen fra tekstområdet

  4. Django ORM, Indsæt ingen dato og klokkeslæt som 0 i MySQL