Inte riktigt. Du kan använda *
kolumn jokertecken
för att välja alla kolumner. Om du går med i flera tabeller kan du välja alla kolumner från en specifik tabell genom att sätta prefixet *
med tabellnamnet eller aliaset:
SELECT a.id, a.title, b.*
FROM articles AS a
JOIN blurbs AS b ON a.id = b.article
Du bör dock inte använda *
såvida du inte skriver ett DB-administrationsprogram.
Alternativt kan du bygga en sats i SQL eller ett annat språk genom att hämta tabellmetadata för att få kolumnnamnen. Med enbart MySQL kan du fråga KOLUMNER
tabellen i INFORMATION_SCHEMA
databas för att hämta kolumnnamnen och använda GROUP_CONCAT
för att bygga kolumnlistan för uttalandet.
SELECT CONCAT(
'SELECT ',
GROUP_CONCAT(COLUMN_NAME SEPARATOR ', '),
' FROM ', :db, '.', :table,
' WHERE ...'
)
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_SCHEMA=:db AND TABLE_NAME=:table
Ersätt ":db", ":table" och "..." med lämpliga värden. Du kan till och med förvandla det till ett förberett uttalande så att du kan använda det för vilket bord som helst. Därifrån, FÖRBEREDA
och UTFÖR
det konstruerade uttalandet.
Om du inte är begränsad till SQL för programmering bör det vara mindre rörigt. DB-drivrutinen för ditt val av språk erbjuder sannolikt metoder för att få metadata. Den faktiska implementeringen skulle likna den rena SQL-metoden (hämta kolumnnamn, assemblera sats, förbereda, köra), men bör inte vara så ful, eftersom du skulle använda ett algoritmiskt, snarare än deklarativt, språk.
Jag skulle vara väldigt intresserad av att se situationen att detta faktiskt krävs..