Niet echt. U kunt de *
gebruiken kolomjokerteken
om alle kolommen te selecteren. Als u meerdere tabellen samenvoegt, kunt u alle kolommen van een specifieke tabel selecteren door *
. voor te voegen met de tabelnaam of alias:
SELECT a.id, a.title, b.*
FROM articles AS a
JOIN blurbs AS b ON a.id = b.article
U moet echter geen *
. gebruiken tenzij u een DB-beheerprogramma schrijft.
Als alternatief kunt u een instructie maken in SQL of een andere taal door tabelmetagegevens op te halen om de kolomnamen te krijgen. Met alleen MySQL kunt u de COLUMNS
tabel in de INFORMATION_SCHEMA
database om de kolomnamen op te halen en GROUP_CONCAT
om de kolomlijst voor de verklaring op te bouwen.
SELECT CONCAT(
'SELECT ',
GROUP_CONCAT(COLUMN_NAME SEPARATOR ', '),
' FROM ', :db, '.', :table,
' WHERE ...'
)
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_SCHEMA=:db AND TABLE_NAME=:table
Vervang ":db", ":table" en "..." door de juiste waarden. U kunt er zelfs een voorbereide verklaring van maken, zodat u deze voor elke tabel kunt gebruiken. Van daaruit PREPARE
en EXECUTE
de geconstrueerde verklaring.
Als je niet beperkt bent tot SQL voor programmeren, zou het minder rommelig moeten zijn. Het DB-stuurprogramma voor uw taal naar keuze biedt waarschijnlijk methoden om metagegevens te verkrijgen. De daadwerkelijke implementatie zou vergelijkbaar zijn met de pure SQL-aanpak (kolomnamen ophalen, instructie samenstellen, voorbereiden, uitvoeren), maar zou niet zo lelijk moeten zijn, omdat u een algoritmische, in plaats van declaratieve, taal zou gebruiken.
Ik zou erg geïnteresseerd zijn in de situatie dat dit echt nodig is..