如何在同时合并选择结果?

时间:2019-01-31 03:15:09

标签: mysql

我餐桌上的人喜欢:

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

1 个答案:

答案 0 :(得分:0)

简单查询,没有存储过程:

SELECT *
FROM person
WHERE file_date >= 2009 
  AND (file_date - bron_year) >= 65
ORDER BY file_date ASC, id ASC