0
我對SQL相當陌生,並且對UPDATE查詢有疑問。我正在使用SQL Server 2008 R2。我寫了下面的SELECT查詢:SQL - 僅當所有記錄匹配時才更新字段
SELECT res.labresultcat_id, res.patient_id, lab.test_performed,
lab.result_status, lab.result_value, lab.abnormal_flag, res.recorded_on,
res.cat_test_name, res.results_to, usr.last_name, res.result_viewed
FROM dbo.med_labresultcat res
INNER JOIN dbo.med_labresult lab
ON res.labresultcat_id = lab.labresultcat_id
LEFT JOIN dbo.res_user usr
ON res.results_to = usr.resource_id
WHERE lab.result_status = 'F' AND usr.last_name = 'Smith'
AND res.result_viewed is NULL
其結果是這個樣子:
patient_id result_id test_performed abnormal_flag recorded_on results_to
0001 0045 ABC N 4/1/2013 14
0001 0045 CBS A 4/1/2013 14
0002 0061 NBC N 4/3/2013 13
0002 0061 MST N 4/3/2013 13
0003 0090 ABC H 4/20/2013 10
0003 0090 MST N 4/20/2013 10
所以,我寫了下面的更新查詢:
;WITH lab AS (SELECT res.labresultcat_id, res.patient_id, lab.test_performed,
lab.result_status, lab.result_value, lab.abnormal_flag, res.recorded_on,
res.cat_test_name, res.results_to, usr.last_name, res.result_viewed
FROM dbo.med_labresultcat res
INNER JOIN dbo.med_labresult lab
ON res.labresultcat_id = lab.labresultcat_id
LEFT JOIN dbo.res_user usr
ON res.results_to = usr.resource_id
WHERE lab.result_status = 'F' AND usr.last_name = 'Smith'
AND res.result_viewed is NULL AND (abnormal_flag = 'N' OR abnormal_flag is NULL))
UPDATE lab SET results_to = '184'
的上面的查詢確實更新了分配給實驗室結果的人員。但是,如果所有result_id相同的結果都是'N'或NULL,我只需要更新results_to字段。
任何幫助,如果非常感謝。謝謝!
你能提供一個例子嗎?我明白你在說什麼,我只是不知道如何構建WHERE語句來獲得我正在尋找的內容...... – MLorenzen