如何使用需要两列的子查询更新表?

时间:2019-05-20 15:53:41

标签: date sql-update subquery min exists

我的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

感谢您的帮助!

0 个答案:

没有答案