Mysql 将列值转换为范围内的多行
我有一张价格不一的桌子。 如何创建一个每行具有唯一价格值的新表。 谢谢 输入表:Mysql 将列值转换为范围内的多行,mysql,sql,Mysql,Sql,我有一张价格不一的桌子。 如何创建一个每行具有唯一价格值的新表。 谢谢 输入表: min_price , max_price , item 3 , 5 , apple 2 , 6 , plum 21 , 25 , banana 输出表 price , item 3 ,
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
您可以创建一个包含您关心的所有数字的表:
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
解决方案优先
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
别再喊了,这和我20分钟前发布的答案不一样吗?@Bamar-是的-道歉。我在没有答案的时候加载了页面,在我提交时看到了几乎相同的结果。英雄所见略同。
+----------+
| number |
+----------+
| 0 |
| 1 |
| 2 |
| .. |
| 99999999 |
+----------+