我有一张价格范围的表 如何创建一个新表,其中每行具有唯一的价格值。 谢谢!
输入表:
min_price , max_price , item
3 , 5 , apple
2 , 6 , plum
21 , 25 , banana
输出表
price , item
3 , apple
4 , apple
5 , apple
2 , plum
3 , plum
4 , plum
5 , plum
6 , plum
21 , banana
22 , banana
23 , banana
24 , banana
25 , banana
答案 0 :(得分:3)
您可以创建一个包含您关注的所有数字的表格:
CREATE TABLE numbers (
n INTEGER NOT NULL,
PRIMARY KEY n
);
INSERT INTO numbers (n) VALUES (1, 2, 3, 4, 5, ..., 1000);
然后你可以写一个连接:
SELECT n.n AS price, i.item
FROM numbers AS n
JOIN input AS i ON n BETWEEN min_price AND max_price
ORDER BY item, price
答案 1 :(得分:0)
首先解决方案;
select sequence.number as price, products.item
from sequence, products -- Note, no join!
where sequence.number >= products.min_price
and sequence.number <= products.max_price
您需要生成一个序列表,其中包含一个数字列表,这些数字会以您使用的最高值达到最大值。一旦你有了这个,你可以加入这个表,没有一个子句来生成联合的所有可能组合,然后只需按你的范围进行过滤。
示例序列表
+----------+
| number |
+----------+
| 0 |
| 1 |
| 2 |
| .. |
| 99999999 |
+----------+