Select from other table if exist
In principle this won't work, as you can't check if table exists and then join it in a query.
The error is unrelated. You are selecting a value in a subselect and it returns multiple rows, as the table exists.
What you can do is:

Create temp table
Check if table1 exists using V_Catalog.table and if specific column existence is important, v_catalog.column
If it exists, select data from table1 into temp table
Use the temp table in the union instead of table1