SQL Server 使用WHERE EXISTS执行SQL UPDATE语句时出错

wljmcqd8  于 2022-12-03  发布在  其他
关注(0)|答案(1)|浏览(263)

我试图编写一个查询,仅当MaSV存在于另一个服务器链接的SinhVien的同一个表中时,才更新MaDeTai。我想设置MadeTai = 'DT3',其中MaSV = 'SVCNTT1',但当我运行时,SQL更新所有的SinhVien表,而不仅仅是MaSV = 'SVCNTT1'

UPDATE [DESKTOP-DPTRB14\MSSQLSERVER04].[DOANHUNRE].[dbo].[SinhVien]
SET MaDeTai = 'DT3' 
WHERE EXISTS (
    SELECT 1
    FROM [DESKTOP-DPTRB14\MSSQLSERVER01].[DOANHUNRE].[dbo].[SinhVien] SV2
    WHERE SV2.MaSV = MaSV AND SV2.MaSV = 'SVCNTT1'
);
2q5ifsrm

2q5ifsrm1#

您没有将exists子查询与要更新的表进行比较,所以是的,它对每一行都是true。请尝试以下操作:

UPDATE SV4 SET
    MaDeTai = 'DT3' 
FROM [DESKTOP-DPTRB14\MSSQLSERVER04].[DOANHUNRE].[dbo].[SinhVien] SV4
WHERE EXISTS (
    SELECT 1
    FROM [DESKTOP-DPTRB14\MSSQLSERVER01].[DOANHUNRE].[dbo].[SinhVien] SV1
    -- Correlate between the 2 tables
    WHERE SV1.MaSV = SV4.MaSV
)
AND SV4.MaSV = 'SVCNTT1';

请注意简短而有意义的表别名。

相关问题