oprócz powyższych odpowiedzi, co stanowi ważną różnicą jest to, że klauzula ON zachowuje kolumny z każdej złączonej tabeli osobno, co klauzula USING scala kolumny z połączonych tabel w jedną kolumnę. Może to być ważne, jeśli na przykład chcesz zachować wiersze w zestawie wyników tylko wtedy, gdy pasujący wiersz nie istnieje w jednej z połączonych tabel. Aby to zrobić, że zazwyczaj użyć sprzężenia zewnętrznego wraz z warunku w klauzuli WHERE, takich jak
SELECT t1.*
FROM TABLE_1 t1
LEFT OUTER JOIN TABLE_2 t2
ON (t2.KEY_FIELD = t1.KEY_FIELD)
WHERE t2.KEY_FIELD IS NULL
W tym przypadku zakłada się, że TABLE_2.KEY_FIELD jest częścią klucza podstawowego TABLE_2 i w ten sposób nigdy nie może być NULL, jeśli dane są rzeczywiście obecne w TABLE_2. Jeśli po powyższym sprzężeniu okaże się, że TABLE_2.KEY_FIELD zawiera NULL w połączonym zestawie, oznacza to, że nie znaleziono wiersza TABLE_2 odpowiadającego wierszowi TABLE_1. Czasami może się przydać.
Udostępnij i ciesz się.
[Dokumentacja jest całkiem dobra] (http://docs.oracle.com/javadb/10.6.2.1/ref/rrefsqljusing.html) –