如何使用select语句中的值更新临时表?

时间:2015-08-13 14:09:05

标签: sql sql-server tsql

我创建了一个临时表来保存这样的值:

CREATE TABLE #TempCount (PendingOrders INT, OpenOrders INT, ClosedOrders INT);

我想用SELECT语句中的值更新列:

UPDATE #TempCount
    SET PendingOrders = 
    (
    SELECT
    COUNT(OrderID) AS 'PendingOrders'
    FROM
    dbo.Products
    WHERE
    OrderStatus = 1
    )

然而似乎没有任何更新。我希望PendingOrders显示一个数字,但它没有输入任何内容。该列为空。这同样适用于其他列 - 没有任何更新。

我怎么解决这个问题?

4 个答案:

答案 0 :(得分:5)

您需要一行才能更新它。先做一个“初始化”INSERT:

INSERT INTO #TempCount VALUES(0, 0, 0)

答案 1 :(得分:2)

在我看来,首先需要一个insert语句来生成行。

INSERT #TempCount (PendingOrders)
SELECT COUNT(OrderID) AS 'PendingOrders'
FROM dbo.Products
WHERE OrderStatus = 1

答案 2 :(得分:2)

如果您只想保留单个值,请考虑变量

declare @PendingOrders int
set @PendingOrders = ( SELECT COUNT(OrderID) 
                       FROM dbo.Products 
                       WHERE OrderStatus = 1 )  


select @PendingOrders, @OpenOrders, @ClosedOrders 

答案 3 :(得分:1)

使用以下语法:

UPDATE t
  SET t.xxx=p.xxx
    FROM #TempCount t, Products p
      WHERE ......

并不总是需要进行子选择。