Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/83.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 将列值转换为范围内的多行_Mysql_Sql - Fatal编程技术网

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 |
  +----------+