我的表人喜欢:
id, bron_year, file_date
2, 1943, 2010
5, 1952, 2017
7, 1953, 2018
8, 1952, 2018
9, 1954, 2017
这里的file_date表示人员创建日期的文件,file_date>= 2009。
我创建了一个过程,如下所示:
CREATE OR REPLACE PROCEDURE `aged_person`()
BEGIN
DECLARE c_year int;
SET c_year = 2009;
WHILE c_year < YEAR(CURDATE()) DO
SELECT * FROM `person` WHERE YEAR(`file_date`) = c_year AND c_year - `bron_year` >= 65 ORDER BY `file_date` ASC, `id` ASC;
SET c_year = c_year + 1;
END WHILE;
END;
这意味着每年收集老年人(当年,人的年龄>= 65)。
现在我要合并所有结果,并且必须保持顺序。请问该怎么做?
顺便说一句,我不想创建一个临时表,因为有人会出去(搬家,错过访问),那么这个人就不会在表中。
例:如果 c_year = 2018,则结果(保持顺序):
2, 1943, 2010
5, 1952, 2017
8, 1952, 2018
7, 1953, 2018
如果 c_year = 2019,则结果(保持顺序):
2, 1943, 2010
5, 1952, 2017
8, 1952, 2018
7, 1953, 2018
9, 1954, 2017
简单查询,没有存储过程:
SELECT *
FROM person
WHERE file_date >= 2009
AND (file_date - bron_year) >= 65
ORDER BY file_date ASC, id ASC