Voo*_*ild 4 sql database sybase
我有两个表"TempStore"和"Store",它们的列名为"Items".
"TempStore"表中有数据需要转移到"Store"表,只需要很少的修改.
我需要迭代"TempStore"数据(即项目)并插入Store ...
更具体地说:我如何迭代TempStore(在sql中)"对于'TempStore'中的每个项目,我需要在'Store'中存储2个或者3个项目,只需稍加修改",我该如何实现?
我想要做的是从"[SELECT*FROM TempStore]"获取每个rowdata并在"Store"中插入三个记录,并且能够更改"items"
尝试INSERT-SELECT:
INSERT INTO Store
(col1, col2, col3...)
SELECT
col1, col2, col3...
FROM TempStore
WHERE ...
Run Code Online (Sandbox Code Playgroud)
只需让SELECT为每个插入返回一行,并在Cols中生成所需的值.您可能需要CASE和另一个表的连接来创建额外的行.
编辑基于评论,OP希望看到数字表在行动
让我们说TempStore表有{Items,Cost,Price,ActualCost,ActualPrice}但是在Store表中我需要存储{Items,Cost,Price}.来自TempStore数据行的ActualCost和ActualPrice需要添加为Store中的另一行....(我希望这是有道理的)....无论如何,使用"WHILE-BEGIN-END"的解决方案?
CREATE TABLE Numbers (Number int NOT NULL PRIMARY KEY)
INSERT INTO Numbers VALUES(1)
INSERT INTO Numbers VALUES(2)
INSERT INTO Numbers VALUES(3)
INSERT INTO Store
(Items, Cost, Price)
SELECT
t.Items, t.Cost
,CASE
WHEN n.Number=1 THEN t.Price
WHEN n.Number=2 THEN t.ActualCost
ELSE t.ActualPrice
END
FROM TempStore t
INNER JOIN Numbers N ON n.Number<=3
WHERE ...
Run Code Online (Sandbox Code Playgroud)
你甚至可以使用UNION:
INSERT INTO Store
(Items, Cost, Price)
SELECT
t.Items, t.Cost, t.Price
FROM TempStore t
UNION ALL
SELECT
t.Items, t.Cost, t.ActualCost
FROM TempStore t
UNION ALL
SELECT
t.Items, t.Cost, t.ActualPrice
FROM TempStore t
Run Code Online (Sandbox Code Playgroud)
无论是数字表或联盟将我们WAY比循环更好!
| 归档时间: |
|
| 查看次数: |
19482 次 |
| 最近记录: |