Potrzebuję zbudować instrukcję SQL, aby usunąć z pewnej tabeli rekordy pasujące do innej instrukcji select.Sql server DELETE i WITH klauzula
W Teradata używamy
delete from table1
where (col1, col2) in (
select col1,col2
from table2
)
Choć w SQL Server to nie może mieć więcej niż 1 kolumny w klauzuli WHERE..IN. Myślałem, że mogę użyć klauzula WITH:
with tempTable(col1,col2) as (
select col1,col2
from table2
)
delete from table1
where table1.col1 = tempTable.col1
and table1.col2 = tempTable.col2
Jak używać klauzuli WITH..DELETE? Czy istnieje inny sposób?
... można użyć Z klauzulą, ale ten sposób jest prostszy. –
dziękuję! ale jak używać WITH..DELETE? – ala
Myśląc o tym, nie widzę powodu, aby używać klauzuli WITH. Używam WITH, gdy sytuacja staje się poważnie nieporządna lub skomplikowana, a usunięcie z tabeli opartej na prostym połączeniu z inną tabelą nie jest wystarczająco złożone, aby uzasadnić dodatkowe wysiłki związane z kodowaniem. –