我试图执行一个SQL查询,如下表所示:

    id         in_year     out_year
  -------    ----------  -------------
     1          2001        2002
     2          2002        2002
     3          2004        2007


可以查询,以便我将该范围内的所有年份都映射到id。例如,我想得到:

    id         year
 ---------   ---------
     1          2001
     1          2002
     2          2002
     3          2004
     3          2005
     3          2006
     3          2007


具体来说,假设表格代表一个商店,其中包含元素及其到店的日期和销售日期。该查询将返回映射到它们在商店中的年份的所有元素ID。

最佳答案

您可以使用数据范围内的年份构造临时表,即

CREATE TABLE tmp_years (
 yr YEAR NOT NULL,
 PRIMARY KEY (yr)
) ENGINE=INNODB;

INSERT INTO tmp_years (yr) VALUES (2000), (2001), (2002), (2003), (2004), (2005), (2006), (2007);


然后做一个JOIN:

SELECT w.id, y.yr FROM wesams_table w
INNER JOIN tmp_years y ON (y.yr >= w.in_year AND y.yr <= w.out_year);

关于mysql - 从年份范围中选择数字,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14926760/

10-11 00:00