2011-10-19 15 views

risposta

4

USINGUSING è un equijoin e causa la rimozione di colonne duplicate dal gruppo di risultati (probabilmente questo lo rende "più relazionale").

ON è un join theta (vale a dire che la condizione di join non deve essere l'uguaglianza e può coinvolgere colonne con nomi diversi) e consente alle colonne duplicate di apparire nel set di risultati.

5

USING richiede i nomi delle colonne di entrambe le tabelle di essere identici:

SELECT * 
FROM employee 
    INNER JOIN department 
     USING (DepartmentID); 

mentre ON permette di designare le colonne di aderire on:

SELECT * 
FROM employee 
    JOIN department 
     ON employee.DepartmentID = department.ID; 

In breve, USING è più succinta, ma ON è più flessibile.

http://en.wikipedia.org/wiki/Join_(SQL)#Equi-join

+2

E in generale penso che se scriveste "USING" la maggior parte della lettura di ciò che avete scritto dovrebbe cercare la definizione della parola chiave. – briantyler

+1

Anche nell'articolo, la colonna unita con 'USING' apparirà una sola volta nel set di risultati, anziché due (una per ogni tabella) – Davy8

4

Non tutte le versioni di SQL usufruendo quindi è meno portatile, oltre ad essere un modo per interrogare rara.

+0

Mi stavo chiedendo perché non ne ho mai sentito parlare prima, e apparentemente 'L'USO la clausola non è supportata da SQL Server e Sybase. "-Wikipedia. Sembra comunque conveniente: – Davy8

+0

' USING' in questo contesto non sembra essere disponibile in DB2 per iSeries. –