Oracle
 sql >> Baza danych >  >> RDS >> Oracle

Usuń z lewym złączem w Oracle 10g

Rozwiązanie Shannona jest do zrobienia:użyj operatora NOT IN (lub NOT EXISTS).

Możesz jednak usunąć lub zaktualizować sprzężenie w Oracle, ale składnia nie jest taka sama jak w MS SQL Server:

SQL> DELETE FROM (SELECT grp.*
  2                  FROM grp
  3                  LEFT JOIN my_data ON grp.id1 = my_data.id1
  4                                   AND grp.id2 = my_data.id2
  5                                   AND grp.id3 = my_data.id3
  6                                   AND grp.id4 = my_data.id4
  7                 WHERE my_data.id1 IS NULL);

2 rows deleted

Ponadto Oracle pozwoli Ci zaktualizować sprzężenie tylko wtedy, gdy nie ma niejasności co do tego, do którego wiersza podstawowego będzie dostęp instrukcja. W szczególności Oracle nie ryzykuje aktualizacji lub usunięcia (wyrażenie nie powiedzie się), jeśli istnieje możliwość, że wiersz może pojawić się dwukrotnie w łączeniu. W takim przypadku usuwanie będzie działać tylko wtedy, gdy istnieje ograniczenie UNIQUE na my_data(id1, id2, id3, id4).



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak uzyskać dostęp do bazy danych Oracle przez sieć?

  2. UPPER() Funkcja w Oracle

  3. Jak zapisać dane Unicode w Oracle?

  4. Automatyczna inkrementacja w Oracle bez użycia wyzwalacza

  5. Domyślna kolejność wierszy dla zapytania select w Oracle