2

最初はDBにとっては簡単なはずですが、ここで本当に苦痛を感じています。理由はわかりません。

Applicationforms という名前の [Table1] と WFInstance という名前の [Table2] の 2 つのテーブルがあります。Table1 の FormSubmitDate を、FormSubmitDate が null であるテーブル 2 の startedDate 値で更新する必要があります。次のクエリを書きます

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 フィールドに 2 番目のテーブル startDate の最初の値が入力されます。table1にnull値を含むレコードが1つある場合でも

ここで何が欠けていますか!?

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 に答える