SQL select join: возможно ли префикс всех столбцов как префикс. *? - PullRequest
182 голосов
/ 01 декабря 2008

Мне интересно, возможно ли это в SQL. Допустим, у вас есть две таблицы A и B, и вы делаете выбор в таблице A и присоединяетесь к таблице B:

SELECT a.*, b.* FROM TABLE_A a JOIN TABLE_B b USING (some_id);

Если в таблице A есть столбцы 'a_id', 'name' и 'some_id', а в таблице B есть 'b_id', 'name' и 'some_id', запрос возвратит столбцы 'a_id', 'name' , 'some_id', 'b_id', 'name', 'some_id'. Есть ли способ добавить префикс имен столбцов таблицы B без перечисления каждого столбца в отдельности? Эквивалент этого:

SELECT a.*, b.b_id as 'b.b_id', b.name as 'b.name', b.some_id as 'b.some_id'
FROM TABLE_A a JOIN TABLE_B b USING (some_id);

Но, как уже упоминалось, без перечисления каждого столбца, что-то вроде:

SELECT a.*, b.* as 'b.*'
FROM TABLE_A a JOIN TABLE_B b USING (some_id);

По сути, что-то сказать, "префикс каждого столбца, возвращаемого b. *, С" чем-то "". Это возможно или мне не повезло?

Заранее спасибо за помощь!

РЕДАКТИРОВАТЬ: рекомендация не использовать SELECT * и т. Д. Является действительной рекомендацией, но не имеет отношения к моему контексту, поэтому, пожалуйста, придерживайтесь рассматриваемой проблемы - возможно ли добавить префикс (константа, указанная в запросе SQL) ко всем именам столбцов таблицы в соединении?

РЕДАКТИРОВАТЬ: моя конечная цель состоит в том, чтобы иметь возможность выполнять SELECT * для двух таблиц с объединением и иметь возможность определять по именам столбцов, которые я получаю в моем наборе результатов, какие столбцы получены из таблицы A и какие столбцы взяты из таблицы B. Опять же, я не хочу, чтобы список столбцов индивидуально, мне нужно иметь возможность сделать SELECT *.

Ответы [ 21 ]

0 голосов
/ 01 декабря 2008

select * обычно делает для плохого кода, так как новые столбцы имеют тенденцию добавляться, или порядок столбцов изменяется в таблицах довольно часто, что обычно нарушает выбор * очень тонкими способами. Таким образом, перечисление столбцов является правильным решением.

Что касается того, как выполнить ваш запрос, не уверен насчет mysql, но в sqlserver вы можете выбрать имена столбцов из syscolumns и динамически создать предложение select.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...