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如果需要更多的行,可以使用它生成更大的集合。