2016-04-13 5 views
0

に参加からのビューを作成します。でにVerticaは、私が参加するからにVerticaでビューを作成しようとすると、キー列が重複しているので、私はエラーを取得する</p> <pre class="lang-sql prettyprint-override"><code>CREATE VIEW c AS SELECT * FROM a JOIN b ON a.key = b.key; </code></pre> <p>、重複キー列

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

を非Vertica SQLの場合、私はが同じだが、VerticaにはUSINGがないと、USINGキーワードを使用できることを知っている[編集:wijはVertica SQLにUSING]。 *を選択するのではなく、明示的に列を列挙することもできますが、テーブルの1つに何百もの列があり、それらをすべて(重複するキーを除いて)欲しいです。 1つの列を除くすべてを選択する場合はdoesn't seem to be an easy wayもあります。

USINGを除き、列名が同じ場合に結合でキー列を1つだけ選択する方法はありますか?例えば、列の

+2

にVertica *は*(それを試してみてください)を使用してキーワードを持つん。エラー自体は別の問題です。どのビュー定義でもすべての列名を列挙することが推奨されています(予期しないスキーマの変更や列の名前の変更や改ざんに対しては注意してください)。あなたのテーブルの1つに多量のカラムがある場合は、特別なテーブル 'select column_name from columns 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)'を 'a JOIN b USING(key)'と使うことができますが、verticaはその構文をサポートしていません –

関連する問題

 関連する問題