2013-04-16 101 views
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字段。

任何幫助,如果非常感謝。謝謝!

回答

0

只需在您的更新語句中附加一個where子句並在該語句中執行匹配子句。

+0

你能提供一個例子嗎?我明白你在說什麼,我只是不知道如何構建WHERE語句來獲得我正在尋找的內容...... – MLorenzen

相關問題