Bạn có thể có các bản sao trong dữ liệu. DISTINCT
không đảm bảo bạn có IdToUpdate
duy nhất khi bạn sử dụng nó với các cột khác. Xem:
TẠO BẢNG #MyTable (IdToUpdate INT, LogSetIdToUpdateTo INT); CHÈN VÀO CÁC GIÁ TRỊ #MyTable (1,1), (1,2), (2,1), (3,1); CHỌN DISTINCT IdToUpdate , LogSetIdToUpdateToFROM #MyTable;
Bạn sẽ nhận được IdToUpdate
hai lần. Kiểm tra dữ liệu của bạn:
=0 và nullLogSetId.LogSetId =-1) CHỌN IdToUpdate, COUNT (*) AS cFROM cteGROUP BY IdToUpdateHAVING COUNT (*)> 1;
Một cách để thực hiện là sử dụng hàm tổng hợp (MAX / MIN)
thay vì DISTINCT
:
=0 và nullLogSetId.LogSetId =-1 GROUP BY nullLogSetId.Id) trên (Id =IdToUpdate) khi khớp sau đó cập nhật tập LogSetId =LogSetIdToUpdateTo