2010-04-05 8 views
13

Tengo dos tablas: tabla1, tabla2. Table1 tiene 10 columnas, table2 tiene 2 columnas.Seleccione columnas adecuadas de la instrucción JOIN

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

deseo seleccionar todas las columnas de la Tabla 1, y sólo 1 columna de tabla2. ¿Es posible hacer eso sin enumerar todas las columnas de table1?

Respuesta

14

Sí, puede hacer lo siguiente:

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

¡Gracias por la respuesta! –

-1

Uso table1.* en lugar de todas las columnas de la tabla 1;)

4

A pesar de que usted puede hacer lo t1.*, t2.col1, yo no lo recomendaría en la producción código.

Yo haría nunca utilice SELECT * en producción - ¿por qué?

  • usted está diciendo a SQL Server para obtener todas las columnas - es lo que realmente, realmente necesita todos ellos?
  • al no especificar los nombres de las columnas, SQL Server tiene que darse cuenta por sí mismo: tiene que consultar el diccionario de datos para averiguar qué columnas están presentes, lo que cuesta un poco de rendimiento
  • lo más importante: usted don No sé lo que está recuperando. De repente, la tabla cambia, se agrega otra columna o dos. Si tiene algún código que confíe en, por ejemplo, la secuencia o el número de columnas de la tabla sin comprobar de forma explícita para eso, su código puede frenar

Mi recomendación para el código de producción: siempre especificar exactamente esas columnas que realmente necesita - e incluso (sin excepciones!) si los necesita a todos, deletérelos explícitamente. Menos sorpresas, menos errores que buscar, si alguna vez cambia en la tabla subyacente.

+1

Hmm, OK, tengo una mesa ** table1 **. Contiene 10 columnas. ¿Qué instrucción SELECT será más rápida? 1. SELECT * FROM Tabla1 2. SELECT col1, col2/* hasta diez */de la Tabla1 Y que será más comprensible? –

+1

El que indique explícitamente las 10 columnas será más rápido y más comprensible. –

+1

¿por qué la lista explícita de columnas será más rápida? – amwinter

Cuestiones relacionadas