2

首先,对于 DB'es 来说应该很容易,但它真的让我很痛苦,我不知道为什么,,

我有两个表,名为 Applicationforms 的 [Table1] 和名为 WFInstance 的 [Table2] 我需要使用表 2 中的 startedDate 值更新 Table1 中的 FormSubmitDate,其中 FormSubmitDate 为空。我写了以下查询

UPDATE    ApplicationForm
SET              FormSubmitDate = wfi.StartDate
FROM         ApplicationForm app ,
                      WorkFlowInstances wfi

WHERE     app.FormSubmitDate is null and wfi.applicationID = app.ID 

当我运行查询时,SQL 将查询重新生成到这个,,

UPDATE    ApplicationForm
SET              FormSubmitDate = wfi.StartDate
FROM         ApplicationForm AS app INNER JOIN
                      WorkFlowInstances AS wfi ON app.ID = wfi.ApplicationID CROSS JOIN
                      ApplicationForm
WHERE     (app.FormSubmitDate IS NULL)

我尝试使用 join 写另一个语句,,

UPDATE ApplicationForm
SET FormSubmitDate = wfi.StartDate
FROM ApplicationForm 
JOIN WorkFlowInstances wfi ON ApplicationForm.ID = wfi.ApplicationID 
WHERE  FormSubmitDate is null

和 SQL 生成相同的新语法,,

现在当我运行代码时,[所有记录] formSubmitDate 字段填充了第二个表 startDate 的第一个值。即使我有一条记录在 table1 中包含空值

我在这里想念什么!?

4

1 回答 1

3

我认为这可以满足您的要求。试试看,让我们知道。

UPDATE tabl3
SET formsubmitdate=(SELECT startdate
  FROM table4
  WHERE table4.id=tabl3.id AND tabl3.formsubmitdate is null);

编写相同内容的另一种方法是

UPDATE tabl3
SET formsubmitdate= startdate
FROM table4 where tabl3.id = table4.id and formsubmitdate is null
于 2013-04-09T07:20:25.110 回答