我创建了一个临时表来保存这样的值:
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
显示一个数字,但它没有输入任何内容。该列为空。这同样适用于其他列 - 没有任何更新。
我怎么解决这个问题?
答案 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 ......
并不总是需要进行子选择。