[英]Update main table based on rows from a secondary table
我有一個員工抽獎類型的應用程序,表格如下所示:
Employee (ID, name, selectionCount)
Selections (employeeID, ipAddress)
現在,我需要一個更新查詢,該查詢將計算每個employeeID(具有唯一的IP地址)的選擇數量,並更新表Employee中的selectionCount列。
這樣的事情應該起作用:
WITH SelectionCounts(EmployeeId, SelectionCount)
AS
(
SELECT s.EmployeeId, COUNT(DISTINCT IpAddress) AS SelectionCount
FROM Selections s
GROUP BY s.EmployeeId
)
UPDATE Employee
SET SelectionCount = sc.SelectionCount
FROM SelectionCounts sc
WHERE ID = sc.EmployeeId
沒有測試它,因此語法可能不完全正確。
update Employee
set selectionCount = (select count(distinct ipAddress)
from Selections
where Selections.emmployeeID = Employee.ID)
使用najmeddine解決方案,您可以將該代碼放入SQL Server中Selections表的插入和/或更新觸發器中:
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TRIGGER UpdateSelectionCount ON Selections
AFTER UPDATE, INSERT
AS
BEGIN
SET NOCOUNT ON
UPDATE
Employee
SET
selectionCount = (SELECT
COUNT(DISTINCT ipAddress)
FROM
Selections
WHERE
Selections.EmployeeID = Employee.ID)
END
GO
不是SQL Server專家,但是這樣的方法應該起作用:
update Employee a
set selectionCount = (select count(*)
from Selections
where employeeID = a.ID)
順便說一句,我想您知道設計有些不規范,這在某些情況下可能是不希望的。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.