有如下的一个表
CREATE TABLE Inventory (
goods char (10) NOT NULL ,
pieces int (11) NOT NULL ,
PRIMARY KEY (goods)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
有如下的数据
insert into Inventory values
( "Hard disk" , 5),
( "Display" , 3);
现在呢?需要对表进行分解,如表中有一条记录
( "Display" , 3)
希望得到三条记录
( "Display" , 1),
( "Display" , 1),
( "Display" , 1)
解答 1: 用一个辅助表来完成
建立如下的一个表
CREATE TABLE Sequence (
id int (11) NOT NULL AUTO_INCREMENT,
PRIMARY KEY (id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
在表中插入如下数据
insert into Sequence values
(1),(2),(3),(4),(5);
用以下 SQL 完成所求
select i.goods, 1 from Inventory i, Sequence s
where i.pieces >= s.id order by goods;