如何在 while 中合并选择的结果



我的表人喜欢:

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

相关内容

  • 没有找到相关文章