Non proprio. Puoi utilizzare *
carattere jolly della colonna
per selezionare tutte le colonne. Se stai unendo più tabelle, puoi selezionare tutte le colonne da una tabella specifica anteponendo *
con il nome o l'alias della tabella:
SELECT a.id, a.title, b.*
FROM articles AS a
JOIN blurbs AS b ON a.id = b.article
Tuttavia, non dovresti usare *
a meno che tu non stia scrivendo un programma di amministrazione DB.
In alternativa, puoi creare un'istruzione in SQL o in un altro linguaggio recuperando i metadati della tabella per ottenere i nomi delle colonne. Usando solo MySQL, puoi interrogare COLUMNS
tabella nella INFORMATION_SCHEMA
database per ottenere i nomi delle colonne e utilizzare GROUP_CONCAT
per creare l'elenco di colonne per l'istruzione.
SELECT CONCAT(
'SELECT ',
GROUP_CONCAT(COLUMN_NAME SEPARATOR ', '),
' FROM ', :db, '.', :table,
' WHERE ...'
)
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_SCHEMA=:db AND TABLE_NAME=:table
Sostituire ":db", ":table" e "..." con i valori appropriati. Puoi persino trasformarlo in una dichiarazione preparata in modo da poterlo utilizzare per qualsiasi tabella. Da lì, PREPARE
e EXECUTE
l'istruzione costruita.
Se non sei limitato a SQL per la programmazione, dovrebbe essere meno disordinato. Il driver DB per la tua lingua preferita probabilmente offre metodi per ottenere i metadati. L'implementazione effettiva sarebbe simile all'approccio SQL puro (ottenere i nomi delle colonne, assemblare l'istruzione, preparare, eseguire), ma non dovrebbe essere così brutta, poiché useresti un linguaggio algoritmico, piuttosto che dichiarativo.
Sarei molto interessato a vedere la situazione in cui ciò è effettivamente richiesto..