ऐसा इसलिए होता है क्योंकि एक दृश्य में दो आईडी नाम वाले कॉलम होते हैं, एक तालिका 1 से और एक तालिका 2 से, क्योंकि चयन *।
आपको यह निर्दिष्ट करने की आवश्यकता है कि आप किस आईडी को दृश्य में देखना चाहते हैं।
SELECT table1.id, column2, column3, ... FROM table1, table2
WHERE table1.id = table2.id
क्वेरी काम करती है क्योंकि इसमें समान रूप से नामित कॉलम हो सकते हैं...
postgres=# select 1 as a, 2 as a;
a | a
---+---
1 | 2
(1 row)
postgres=# create view foobar as select 1 as a, 2 as a;
ERROR: column "a" duplicated
postgres=# create view foobar as select 1 as a, 2 as b;
CREATE VIEW