2010-04-05 10 views
13

Ho due tabelle: tabella1, tabella2. Table1 ha 10 colonne, table2 ha 2 colonne.Selezionare le colonne appropriate dall'istruzione JOIN

SELECT * FROM table1 AS T1 INNER JOIN table2 AS T2 ON T1.ID = T2.ID 

Desidero selezionare tutte le colonne da tabella1 e solo 1 colonna da tabella2. È possibile farlo senza enumerare tutte le colonne da tabella1?

risposta

14

Sì, è possibile effettuare le seguenti operazioni:

SELECT t1.*, t2.my_col FROM table1 AS T1 INNER JOIN table2 AS T2 ON T1.ID = T2.ID 
+0

Grazie per una risposta! –

-1

Usa table1.* al posto di tutte le colonne della tabella 1;)

4

Anche se è possibile fare la cosa t1.*, t2.col1, io non lo consiglio in produzione codice.

Vorrei mai e poi mai utilizzare un SELECT * in produzione - perché?

  • che stai dicendo SQL Server per ottenere tutte le colonne - non si ha realmente, veramente bisogno tutti loro?
  • non specificando i nomi delle colonne, SQL Server deve andare a scoprirlo da solo - deve consultare il dizionario dei dati per scoprire quali colonne sono presenti che costa un po 'di prestazioni
  • più importante: non si So cosa stai tornando. All'improvviso, la tabella cambia, un'altra colonna o due vengono aggiunti. Se hai qualche codice che si basa ad es. la sequenza o il numero di colonne della tabella, senza esplicitamente il controllo per questo, il codice può freno

La mia raccomandazione per il codice di produzione: sempre specificare esattamente quelle colonne si ha realmente bisogno - e anche (senza eccezioni!) se hai bisogno di tutti loro, scrivi esplicitamente. Meno sorprese, meno bug da cercare, se mai qualcosa cambia nella tabella sottostante.

+1

Hmm, OK, ho una tabella ** table1 **. Contiene 10 colonne. Quale istruzione SELECT sarà più veloce? 1. SELEZIONA * DALLA TABELLA1 2. SELEZIONA COL1, COL2/* FINO A DIECI */DA TABELLA1 E quale sarà più comprensibile? –

+1

Quello che afferma esplicitamente tutte e 10 le colonne sarà sia più veloce che più comprensibile. –

+1

perché l'elenco esplicito di colonne sarà più veloce? – amwinter

Problemi correlati