0

我对 SQL 相当陌生,并且对 UPDATE 查询有疑问。我正在使用 SQL Server 2008 R2。我编写了以下 SELECT 查询:

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

因此,我编写了以下 UPDATE 查询:

;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 字段。

如果非常感谢任何帮助。谢谢!

4

1 回答 1

0

只需将 where 子句附加到您的更新语句并在该 where 语句中执行匹配子句。

于 2013-04-16T22:00:32.893 回答