2016-04-13 1 views
0

Когда я пытаюсь создать представление в Vertica от объединения,Vertica создать вид из присоединиться дублирующие ключевые столбцы

CREATE VIEW c AS 
    SELECT * FROM a JOIN b ON a.key = b.key; 

Я получаю сообщение об ошибке, так как ключевой столбец дублируется:

ROLLBACK 5450: View definition can not contain duplicate column names "key" 

В non-Vertica SQL, я знаю, что могу использовать ключевое слово USING, когда оба имени столбца ключа одинаковы, , но Vertica не имеет USING [EDIT: wij указал, что Vertica SQL имеет USING]. Я также мог бы перечислять столбцы явно, а не выбирать *, но в одной из таблиц есть сотни столбцов, и я хочу их всех (кроме дубликата ключа). Там также doesn't seem to be an easy way, чтобы выбрать все, кроме одного столбца.

Есть ли способ выбрать только один ключевой столбец в соединении, когда имена столбцов одинаковы без USING?

+2

Vertica * делает *, имеющий ключевое слово USING (попробуйте). Сама ошибка - это другая проблема - мне научили, что лучше всего перечислять все имена столбцов в любом определении определения (защищать от неожиданных изменений схемы или переименовывать или изменять столбцы). Если в одной из ваших таблиц есть тонна столбцов, используйте специальную таблицу 'select column_name из столбцов , где table_name = 'foo'', чтобы распечатать их все. Вам нужно только сделать это один раз. – wij

ответ

2

список записи столбца (потому что обе таблицы имеют ключ поля), например:

CREATE VIEW c AS 
SELECT a.*, b.field1, b.field2 FROM a JOIN b ON a.key = b.key; 
+0

Это хороший момент - если в другой таблице меньше столбцов, я просто могу просто перечислить их и использовать * для большей таблицы. Комментарий wij лучше, но поскольку это не ответ, я соглашусь с вами. –

+0

В MySQL вы можете использовать join_condition 'USING (column_list)' например 'JOIN b USING (key)', но vertica не поддерживает этот синтаксис –

Смежные вопросы