Mysql
 sql >> база данни >  >> RDS >> Mysql

Изберете последователност между две числа в MySQL

Нещо като това трябва да го направи:-

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

Той разчита на таблица с цели числа с колона, наречена i, със стойности от 0 до 9. Той обединява това срещу себе си, за да получи диапазон от числа от 0 до 99, така че се справя с периоди от време, които са толкова далеч един от друг.

Премахване на подизборите, за да го използвате в изглед

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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. mysql брой редове на час

  2. как да получите текст от pdf файл и да го запишете в DB

  3. Как да получите следващия идентификатор за автоматично увеличение в mysql

  4. АВТОМАТИЧНО ИЗТРИВАНЕ НА РЕД 1 ден след вмъкване (MySQL)

  5. Как да съхраня BIGINT в MySQL с помощта на PDO?