我试图执行一个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/