Subodh Kumar <subodh.kumar@xxxxxxxxxxxx> writes: > I have run below query it is created 'test' table without columns > but table row count is 2. > please give me clarity about this, i thought it may give syntax error but > not > either it must have 2 rows data but both are not happened. > with ins_test as (select 1 as srno > union > select 2) > select into test from ins_test; I think you meant to write with ins_test as (select 1 as srno union select 2) select * into test from ins_test; or possibly with ins_test as (select 1 as srno union select 2) select srno into test from ins_test; What you did write has no columns in the SELECT result clause, so the INTO creates a table of no columns --- but you get the expected number of rows. Postgres allows zero-column tables, and zero-column selects, because otherwise there are too many weird corner cases; for instance ALTER TABLE DROP COLUMN would have to reject dropping the last column. The SQL standard has a different opinion about which way is less ugly ... regards, tom lane