Byłem bardzo niechętny do publikowania tego, ponieważ uważam, że jest to częsty problem, ale nie mogę znaleźć odpowiedzi, która dotyczy tej sytuacji ... (może jestem po prostu kiepski googlera).Usuwanie oparte na kluczu złożonym z innej tabeli
Mam dwie identyczne tabele (kolumna mądra, dane nie), tabela1 i tabela2. Chcę usunąć rekordy w tabeli 1, w której klucz złożony (col1, col2) istnieje w obu tabelach. Oto, co mam, co wydaje mi się poprawne, ale rzuca błąd.
DELETE FROM Table1
WHERE (**Col1**, Col2) IN
(SELECT Col1, Col2
FROM Table1 a
JOIN Table2 b
ON a.Col1 = b.Col1
AND a.Col2 = b.Col2)
Błąd:
Msg 4145, Level 15, State 1, Line 212 An expression of non-boolean type specified in a context where a condition is expected, near ','.
Włożyłem dwa *
wokół fragmentu kodu, który ma 'Red squiggles błędach.
Uważam, że to jest SQL-SERVER? – gdoron
Tak, przepraszam. Powinien być bardziej szczegółowy. Tutaj w pracy po prostu odwołujemy się do SQL-SERVER jako SQL i Oracle jako Oracle. – Jeff
Ponieważ Oracle jest dużo "starszy" niż serwer sql, dziwna konwencja, ale ... jeśli sprawi, że twój szef będzie szczęśliwy, a ty bogatszy, dlaczego nie! – gdoron