Tôi có hai bảng lớn (4 triệu bản ghi) có cấu trúc giống nhau và chúng có khoảng 300 nghìn hàng trùng lặp. Tôi muốn DELETE
các hàng trùng lặp bằng cách sử dụng cú pháp DELETE IN
.
Nhiều biểu thức với IN
Tôi đã thực hiện nó bằng cách sử dụng câu lệnh MERGE
(chỉ khả dụng vào năm 2008 hoặc mới hơn, vì vậy tôi không thể sử dụng nó kể từ khi tôi vẫn chạy 2005) và DELETE EXISTS
, nhưng tôi đang chạy vào một số gặp sự cố khi nhận được DELETE IN
để hoạt động.
Vấn đề mà tôi đang gặp phải với DELETE IN
là bảng lớn của tôi có khóa chính kết hợp, có nghĩa là tôi chỉ có thể xác định các hàng duy nhất sử dụng tất cả các cột đó cùng nhau.
Có thể trong T-SQL có nhiều biểu thức làm tham số cho mệnh đề IN
không? Một cái gì đó như:
DELETE FROM MyBigTable
WHERE ([Column1], [Column2], [Column3]) IN
(SELECT [Column1],
[Column2],
[Column3]
FROM MyBigTable
INTERSECT
SELECT [Column1],
[Column2],
[Column3]
FROM MyOtherBigTable)
này được SQL cú pháp tiêu chuẩn hợp lệ (! Nếu bạn thay thế những dấu ngoặc vuông với dấu ngoặc kép) nhưng chưa được hỗ trợ trong SQL Máy chủ, Bạn có thể bỏ phiếu [ở đây] (http://connect.microsoft.com/SQLServer/feedback/details/299231/add-support-for-ansi-standard-row-value-constructors) để đưa vào. – onedaywhen
Nếu bạn muốn cú pháp này được hỗ trợ trong phiên bản SQL Server trong tương lai, vui lòng bỏ phiếu và nhận xét: http://connect.microsoft.com/SQLServer/feedback/details/299231/add-support-for-ansi-standard-row- nhà thầu có giá trị –