首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >删除记录和更新数量

删除记录和更新数量
EN

Stack Overflow用户
提问于 2015-11-23 20:21:35
回答 3查看 1.3K关注 0票数 0

我们有一个库存管理系统,它由项目目录、库存和资产组成。目前,我们对每一个库存都有一个条目,但我们现在正在实现库存表和资产表中的数量。例如,清单表中的数据如下所示:

代码语言:javascript
复制
 InventoryID | ItemID
----------------------
 100         | 5
 101         | 5
 102         | 5
 103         | 5
 104         | 9
 105         | 5

我们现在要做的是将记录与相同的ItemID合并,并将数量放在字段中:

代码语言:javascript
复制
 InventoryID | ItemID | Quantity
---------------------------------
 100         | 5      | 5
 104         | 9      | 1

我有数千条需要合并的记录,我想知道一种更快的方法来实现这一点,而不是当前的方法,即查找记录、获取计数、删除除最新记录之外的所有记录以及使用计数更新quantity字段(所有这些都是在SSMS中手动完成的,而不是通过任何脚本)。

如有任何帮助/建议,将不胜感激。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2015-11-23 20:37:00

制作临时表并插入:

代码语言:javascript
复制
SELECT MIN(InventoryID), ItemID, COUNT(*) as Quantity
FROM Inventory
INTO #TEMP
GROUP BY ItemID

然后更新主表(如果您还没有创建一个quantity列,那么首先创建一个quantity列):

代码语言:javascript
复制
UPDATE I
SET I.Quantity = T.Quantity
FROM #TEMP
WHERE I.InventoryID = T.InventoryID and I.ItemID = T.ItemID

然后从库存中删除额外的记录

代码语言:javascript
复制
DELETE
FROM INVENTORY
WHERE InventoryID not in(
   SELECT InventoryID
   FROM #TEMP)
票数 2
EN

Stack Overflow用户

发布于 2015-11-23 20:28:29

假设您在库存表中有一个quantity字段,您可以更新该字段,然后删除现在不必要的记录。

代码语言:javascript
复制
UPDATE Inventory
SET Inventory.Quantity = Computed.QCount
FROM Inventory
INNER JOIN 
(
    SELECT InventoryId, COUNT(*) as QCount
        FROM Inventory
    GROUP BY InventoryId
) as Computed
on Inventory.ItemId = Computed.ItemId

--Now Delete Duplicates

DELETE Inventory 
FROM Inventory
LEFT OUTER JOIN (
   SELECT MIN(InventoryId) as RowId, ItemId
   FROM Inventory 
   GROUP BY ItemId
) as KeepRows ON
   Inventory.InventoryId = KeepRows.RowId
WHERE
   KeepRows.ItemId IS NULL
票数 0
EN

Stack Overflow用户

发布于 2015-11-23 20:34:48

一个简单的脚本可以创建所需的新表,然后删除旧表并用新表替换数据。

例如,类似于

代码语言:javascript
复制
SELECT 
   MIN(InventoryID) AS InventoryID,
   ItemID,
   COUNT(*) AS Quantity
INTO
   NewInventoryTable
FROM
   Inventory
GROUP BY 
   ItemID
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33879954

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档