Aunque muchos dicen que es una práctica recomendada enumerar explícitamente cada columna que desea devolver, hay situaciones en las que es posible que desee ahorrar tiempo y omitir ciertas columnas de los resultados (por ejemplo, pruebas). A continuación he dado dos opciones que resuelven este problema.
1.Crear una función que recupera todos los nombres de las columnas deseadas: (He creado un esquema denominado funciones para mantener esta función)
DELIMITER $$
CREATE DEFINER=`root`@`%` FUNCTION `getTableColumns`(_schemaName varchar(100), _tableName varchar(100), _omitColumns varchar(200)) RETURNS varchar(5000) CHARSET latin1
BEGIN
SELECT GROUP_CONCAT(COLUMN_NAME) FROM information_schema.columns
WHERE table_schema = _schemaName AND table_name = _tableName AND FIND_IN_SET(COLUMN_NAME,_omitColumns) = 0 ORDER BY ORDINAL_POSITION;
END
Crear y ejecutar instrucción de selección:
SET @sql = concat('SELECT ', (SELECT
functions.getTableColumns('test', 'employees', 'age,dateOfHire')), ' FROM test.employees');
PREPARE stmt1 FROM @sql;
EXECUTE stmt1;
2. O sin escribir una función que podría:
SET @sql = CONCAT('SELECT ', (SELECT GROUP_CONCAT(COLUMN_NAME) FROM
information_schema.columns WHERE table_schema = 'test' AND table_name =
'employees' AND column_name NOT IN ('age', 'dateOfHire')),
' from test.eployees');
PREPARE stmt1 FROM @sql;
EXECUTE stmt1;
* Reemplazar prueba con su propio nombre de esquema
** reemplazar a los empleados con su propio nombre de la tabla
*** Reemplazar edad, dateOfHire con las columnas que desea omitir (se puede dejar en blanco para devolver todas las columnas o simplemente entrar en un nombre de columna para omitir)
** ** Se puede ajustar la longitud de las varchars en la función para satisfacer sus necesidades
posible duplicado de [Seleccione todas las columnas excepto una en MySQL?] (Http://stackoverflow.com/questions/9122/select-all-columns-except-one-in-mysql) – tstenner
@tstenner Sí, creo que este es un duplicado del que enlazó. Si bien este no ha sido respondido, creo que este tiene la [respuesta] mejor y más precisa (http://stackoverflow.com/a/13808457/1874069) otorgada por donl. – volderArt