2016-04-13 15 views
0

ben den Vertica bir görünüm oluşturmak için deneyin katılmak, Vertica görünüm oluşturmak

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

Ben anahtar sütun kopyalandığı için bir hata alıyorum:

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

yılında Vertica SQL olmayan, ben anahtar sütun adları aynı, ama Vertica yok, USING [EDIT: wij işaret etti USING anahtar sözcüğünü kullanabileceğimi biliyorum Vertica SQLvar]. Ayrıca, *'u seçmek yerine sütunları açıkça listeleyebilirim, ancak tablolardan biri yüzlerce sütun içeriyor ve hepsini istiyorum (yinelenen anahtar hariç). Bir sütun hariç tümünü seçmek için doesn't seem to be an easy way da var.

Sütun adları USING olmadan aynı olduğunda bir birleştirmede yalnızca bir anahtar sütunu seçmenin bir yolu var mı? Sütunun

+2

Vertica * yapar * (deneyin). Hatanın kendisi farklı bir sorundur - Herhangi bir görünüm tanımında tüm sütun adlarını sıralamak için en iyi uygulama olduğunu öğrettim (beklenmedik şema değişikliklerine veya sütun yeniden adlandırmaya veya değişikliklere karşı koruma). Tablolarınızdan birinde tonlarca sütun varsa, özel tabloyu kullanın; sütunları sütunlarından seçin. Burada table_name = 'foo' ifadesini yazdırın. Sadece bir kere yapmalısın. – wij

cevap

2

yazma liste örneğin, (her iki tablo alan anahtarına sahip olduğundan): KULLANMA anahtar kelime sahip

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

Bu iyi bir nokta - eğer diğer tablo daha az sütun içeriyorsa, sadece bunları listeleyebilir ve daha büyük tablo için * kullanabilirim. wij'in yorumu en iyisidir, ama bu bir cevap olmadığı için ben de seninkini kabul edeceğim. –

+0

MySQL'te join_condition 'USING (column_list)' türünü kullanabilirsiniz, örneğin 'JOIN b USING (key)', ancak vertica bu sözdizimini desteklemez. –

İlgili konular