Не точно. Можете да използвате *
заместващ знак за колона
за да изберете всички колони. Ако се присъединявате към няколко таблици, можете да изберете всички колони от конкретна таблица, като поставите префикс *
с името на таблицата или псевдонима:
SELECT a.id, a.title, b.*
FROM articles AS a
JOIN blurbs AS b ON a.id = b.article
Въпреки това, не трябва да използвате *
освен ако не пишете програма за администриране на DB.
Като алтернатива можете да създадете израз в SQL или друг език, като извлечете метаданни на таблицата, за да получите имената на колоните. Използвайки само MySQL, можете да заявите COLUMNSкод>
таблица в INFORMATION_SCHEMA
база данни, за да получите имената на колоните и използвайте GROUP_CONCAT
за да създадете списък с колони за израза.
SELECT CONCAT(
'SELECT ',
GROUP_CONCAT(COLUMN_NAME SEPARATOR ', '),
' FROM ', :db, '.', :table,
' WHERE ...'
)
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_SCHEMA=:db AND TABLE_NAME=:table
Заменете ":db", ":table" и "..." със съответните стойности. Можете дори да го превърнете в подготвено изявление, за да можете да го използвате за всяка таблица. От там, ПРИГОТВЕЙТЕ
и EXECUTE
конструираното изявление.
Ако не сте ограничени до SQL за програмиране, трябва да е по-малко разхвърляно. DB драйверът за избрания от вас език вероятно предлага методи за получаване на метаданни. Действителната реализация би била подобна на чистия SQL подход (получаване на имена на колони, сглобяване, подготовка, изпълнение), но не би трябвало да е толкова грозно, тъй като бихте използвали алгоритмичен, а не декларативен език.
Ще ми е много интересно да видя ситуацията, в която това всъщност се изисква...