Mysql SQL-按2列之间的值范围分组

Mysql SQL-按2列之间的值范围分组,mysql,sql,Mysql,Sql,假设我们有下表: CREATE TABLE a ( id int primary key, from int, to int ); INSERT INTO a (id, from, to) VALUES (1, 1, 3); INSERT INTO a (id, from, to) VALUES (2, 1, 2); INSERT INTO a (id, from, to) VALUES (3, 2, 4); 我需要编写一个查询,该查询将返回: +---------

假设我们有下表:

CREATE TABLE a (
    id int primary key,
    from int, 
    to int
);

INSERT INTO a (id, from, to) VALUES (1, 1, 3);
INSERT INTO a (id, from, to) VALUES (2, 1, 2);
INSERT INTO a (id, from, to) VALUES (3, 2, 4);
我需要编写一个查询,该查询将返回:

+------------+---------+
|    id      |  value  |
+------------+---------+
|     1      |   1     |
|     1      |   2     |
|     1      |   3     |
|            |         |
|     2      |   1     |
|     2      |   2     |
|            |         |
|     3      |   2     |
|     3      |   3     |
|     3      |   4     |
+------------+---------+

第一列是
id
本身。第二列应该包含从到之间的所有值,步骤1在值之间。

您需要一个数字表。如何生成这样的表取决于所使用的数据库。但是,对于较小的数字,您可以手动执行:

select t.id, (t.from + n.n) as value
from t join
     (select 0 as n union all select 1 union all select 2 union all select 3
     ) n
     on t.from + n.n <= t.to;
选择t.id,(t.from+n.n)作为值
从t连接
(选择0作为n联合所有选择1联合所有选择2联合所有选择3
)n

在T.+N.N考虑应用层中的数据显示的处理问题,如果可用的话(例如PHP的一部分),我有非常小的数字,所以我会坚持你的答案。谢谢大家!@nickbusted如果需要更多的行,可以使用它生成更大的集合。