Tengo 100 columnas en una tabla, quiero enumerar 99 columnas, excepto una en particular, ¿cómo excluir ese nombre de columnas?SQL - excluir una columna de la consulta SELECT
Respuesta
SELECT column_1, column_2, column_3,
/* ...the list of columns 4-97, not shown in this example... */,
column_98, column_99
FROM table
No hay manera más fácil de hacer esto (posiblemente por diseño): necesita mencionar específicamente cada una de las columnas que desea recuperar.
Aunque es una tarea difícil de escribir, esto es realmente una buena cosa: se desaconseja usar SELECT *
en el código de producción (tanto por razones de rendimiento como de mantenimiento); consulte, por ejemplo, this question.
El lenguaje de consulta de bases de datos relacionales Tutorial D permite que una proyección se exprese en términos de los atributos que se eliminarán usando ALL BUT
, sin embargo, no existe una sintaxis equivalente en SQL que le permita hacer esto. Necesita enumerar explícitamente los específicos que desea.
Puede usar una Vista si necesita comúnmente este mismo conjunto de columnas.
No puede.
En teoría, es posible involucrar a SQL dinámico aquí - algún procedimiento se bucle a través de todas las columnas de la tabla (como, all_tabs_columns
vista de diccionario en Oracle enumera todas las columnas de todas las tablas), y formar hasta que una consulta de select c1, c2 c3 ... c99 from tab
, pero te desaliento fuertemente de hacer esto. Le ahorrará varias líneas de código, pero lo hará difícil de mantener. :)
Pruebe esto.
DROP TABLE #MY_TEMP_TABLE
CREATE TABLE #MY_TEMP_TABLE
(
Column_1 int NULL,
Column_2 varchar(10) NULL,
Column_3 datetime NULL
)
INSERT INTO #MY_TEMP_TABLE(Column_1, Column_2, Column_3)
SELECT 1, 'a', GETDATE()
UNION SELECT 2, 'b', GETDATE()
UNION SELECT 3, 'c', GETDATE()
UNION SELECT 4, 'd', GETDATE()
DECLARE @dSQL nvarchar(1000)
SELECT @dSQL = 'SELECT TOP 10 '
SELECT @dSQL = @dSQL + LEFT(nst.ColumnList, LEN(nst.ColumnList)-1) --AS 'List'
FROM (SELECT so.id
FROM TEMPDB..SYSOBJECTS so
WHERE so.name LIKE '#MY_TEMP_TABLE%'
AND so.type = 'u') so
CROSS APPLY (SELECT sc.Name + ', '
FROM TEMPDB..SYSCOLUMNS sc
WHERE sc.id = so.id
AND sc.colid <> 3
FOR XML PATH('')) nst
(ColumnList)
SELECT @dSQL = @dSQL + ' FROM #MY_TEMP_TABLE'
EXEC sp_executesql @dSQL
- 1. SQL SELECT distinta columna
- 2. * en la consulta SELECT
- 3. SELECT DISTINCT en una columna
- 4. SQL select statement que muestra una columna no existente?
- 5. SQL - crear en la columna SELECT para probar la igualdad
- 6. Cómo excluir la columna de FTS3 búsqueda en la tabla
- 7. Consulta SQL para agregar una nueva columna después de una columna existente en SQL Server 2005
- 8. Consulta SQL Varias columnas usando Distintivo en una sola columna
- 9. Consulta SQL con SUM en columna en la tabla JOINed
- 10. consulta SQL avanzado - un problema con una sola fila agregada sub consulta en la cláusula select
- 11. ¿Hay algo como SELECT LAST en la consulta SQL?
- 12. Consulta SQL con múltiples valores en una columna
- 13. ¿Cómo combino estas consultas SQL SELECT en una instrucción SELECT
- 14. consulta SQL para mostrar cambios en la columna "total"
- 15. Columna dinámica en la instrucción SELECT postgres
- 16. Seleccione una columna SQL DISTINCT
- 17. ¿Cómo elegir el nombre de columna devuelto en una consulta SELECT FOR XML?
- 18. Error de consulta con nombre de columna ambiguo en SQL
- 19. Uso SELECT dentro de una consulta UPDATE
- 20. PostgreSQL: utilizando una columna calculada en la misma consulta
- 21. recuento de una consulta SQL
- 22. SQL Select Bottom Records
- 23. SQL Server 2008: ¿Rellena múltiples variables T-SQL de una consulta SELECT?
- 24. SQL Server PRINT SELECT (¿Imprimir un resultado de consulta seleccionado)?
- 25. Android SQLite consulta SELECT
- 26. MySQL select que devuelve una columna ficticia?
- 27. consulta T-SQL en la columna sólo contiene números
- 28. SELECT COUNT (*) SQL SERVER
- 29. SQLite consulta utilizando SELECT anidado
- 30. ¿Desea actualizar una columna en la tabla usando SQL * Loader?
Debes agregar algunos meta texto – keyser