我的SQL Server表具有工作人员ID和每个工作人员的不同日期。我可以在我的select语句中找到每个工人的最早约会。
但是我需要更新表以仅在每个工作人员的最早日期标记一个列。
我尝试了一个在子查询中使用Exists条件的更新表,但不允许我在子查询中同时拥有两列。
我收到以下错误-“当EXISTS不引入子查询时,只能在选择列表中指定一个表达式。”
此版本给我有关它缺少“存在”的错误消息。
UPDATE workers
SET MinDate = 'x'
where eventdate =
(SELECT workerID, MIN(eventdate)
FROM workers
group by workerID)
此版本也失败了,因为它更新了所有行,而忽略了存在的子查询。
UPDATE workers
SET MinDate = 'x'
WHERE EXISTS
(
SELECT workerID, min(eventdate), MinDate
FROM workers
GROUP BY workerID, MinDate
)
我希望最终结果看起来像这样。对于每个工作人员,更新查询应仅将最早的事件日期标记在MinDate列中。现在,MinDate列为空:
workerID eventdate MinDate
1 2016-03-16 x
2 2013-05-31 x
2 2014-02-11 NULL
2 2014-09-09 NULL
3 2013-06-14 x
感谢您的帮助!