Tôi cần xây dựng một câu lệnh SQL để xóa khỏi bảng nhất định các bản ghi khớp với một câu lệnh chọn khác.Máy chủ Sql DELETE và WITH khoản
Trong Teradata chúng tôi sử dụng
delete from table1
where (col1, col2) in (
select col1,col2
from table2
)
Trong thời gian ở SQL Server nó không được phép có nhiều hơn 1 cột trong mệnh đề WHERE..IN. Tôi nghĩ tôi có thể sử dụng mệnh đề WITH:
with tempTable(col1,col2) as (
select col1,col2
from table2
)
delete from table1
where table1.col1 = tempTable.col1
and table1.col2 = tempTable.col2
Cách sử dụng mệnh đề WITH..DELETE? Có cách nào khác không?
... bạn có thể sử dụng WITH mệnh đề, nhưng cách này đơn giản hơn. –
cảm ơn nó đã hoạt động! nhưng làm thế nào để sử dụng WITH..DELETE? – ala
Suy nghĩ về nó, tôi thấy không có lý do gì để sử dụng mệnh đề WITH. Tôi sử dụng WITH khi mọi thứ trở nên lộn xộn hoặc phức tạp một cách nghiêm trọng và việc xóa khỏi bảng dựa trên việc tham gia đơn giản vào một bảng khác không đủ phức tạp để đảm bảo nỗ lực mã hóa bổ sung. –