Nie bardzo. Możesz użyć *
symbol wieloznaczny kolumny
aby wybrać wszystkie kolumny. Jeśli dołączasz do wielu tabel, możesz wybrać wszystkie kolumny z określonej tabeli, dodając przedrostek *
z nazwą tabeli lub aliasem:
SELECT a.id, a.title, b.*
FROM articles AS a
JOIN blurbs AS b ON a.id = b.article
Jednak nie powinieneś używać *
chyba że piszesz program administracyjny DB.
Alternatywnie możesz zbudować instrukcję w języku SQL lub innym języku, pobierając metadane tabeli, aby uzyskać nazwy kolumn. Używając tylko MySQL, możesz wysłać zapytanie do COLUMNS
tabela w INFORMATION_SCHEMA
bazy danych, aby uzyskać nazwy kolumn i użyj GROUP_CONCAT
aby zbudować listę kolumn dla oświadczenia.
SELECT CONCAT(
'SELECT ',
GROUP_CONCAT(COLUMN_NAME SEPARATOR ', '),
' FROM ', :db, '.', :table,
' WHERE ...'
)
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_SCHEMA=:db AND TABLE_NAME=:table
Zastąp ":db", ":table" i "..." odpowiednimi wartościami. Możesz nawet przekształcić go w przygotowane zestawienie, dzięki czemu możesz go użyć na dowolnym stole. Stamtąd PREPARE
i WYKONAJ
skonstruowane oświadczenie.
Jeśli nie ograniczasz się do programowania w języku SQL, powinno być mniej kłopotliwe. Sterownik DB dla wybranego języka prawdopodobnie oferuje metody pobierania metadanych. Rzeczywista implementacja byłaby podobna do czystego podejścia SQL (pobieranie nazw kolumn, instrukcja assemble, przygotowanie, wykonanie), ale nie powinna być tak brzydka, ponieważ używałbyś języka algorytmicznego, a nie deklaratywnego.
Byłbym bardzo zainteresowany zobaczeniem sytuacji, w której jest to rzeczywiście wymagane.