Realmente no. Puede usar el *
comodín de columna
para seleccionar todas las columnas. Si está uniendo varias tablas, puede seleccionar todas las columnas de una tabla específica con el prefijo *
con el nombre de la tabla o alias:
SELECT a.id, a.title, b.*
FROM articles AS a
JOIN blurbs AS b ON a.id = b.article
Sin embargo, no deberías usar *
a menos que esté escribiendo un programa de administración de base de datos.
Alternativamente, puede crear una declaración dentro de SQL u otro idioma obteniendo los metadatos de la tabla para obtener los nombres de las columnas. Usando solo MySQL, puede consultar el COLUMNS
tabla en el INFORMATION_SCHEMA
base de datos para obtener los nombres de las columnas y usar GROUP_CONCAT
para construir la lista de columnas para la declaración.
SELECT CONCAT(
'SELECT ',
GROUP_CONCAT(COLUMN_NAME SEPARATOR ', '),
' FROM ', :db, '.', :table,
' WHERE ...'
)
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_SCHEMA=:db AND TABLE_NAME=:table
Reemplace ":db", ":table" y "..." con los valores apropiados. Incluso puede convertirlo en una declaración preparada para que pueda usarlo para cualquier tabla. A partir de ahí, PREPARE
y EXECUTE
la declaración construida.
Si no está limitado a SQL para programar, debería ser menos complicado. Es probable que el controlador de base de datos para el idioma de su elección ofrezca métodos para obtener metadatos. La implementación real sería similar al enfoque de SQL puro (obtener nombres de columnas, ensamblar declaraciones, preparar, ejecutar), pero no debería ser tan desagradable, ya que estaría usando un lenguaje algorítmico, en lugar de declarativo.
Estaría muy interesado en ver la situación en la que esto es realmente necesario.