Query
如果存在,從其他表中選擇
嗨,我想合併 2 個表,但我不確定表是否退出這是我的查詢:
select a from table union select case when exists(select a from table1) then (select a from table1) else (select a from table2) end;
收到
錯誤:錯誤 4840:用作表達式的子查詢返回多行
我需要在子查詢中使用限制 1,但這不是我想要的結果。
你還有其他建議嗎?謝謝
例如,我剛剛在本地環境中創建了它們以進行測試:
表格1
CREATE TABLE public.table1 ( a int, b varchar(80), c int ); CREATE TABLE public.table a int, b varchar(80), c int );
原則上這是行不通的,因為您無法檢查表是否存在然後將其加入查詢中。
錯誤是無關的。您正在子選擇中選擇一個值,它會返回多行,因為該表存在。
你可以做的是:
- 創建臨時表
- 使用 V_Catalog.table 檢查 table1 是否存在,如果特定列的存在很重要,v_catalog.column
- 如果存在,則從table1中選擇數據到臨時表中
- 使用聯合中的臨時表而不是 table1
我不知道如何使用 Vertica,但您可以嘗試使用 If exists like in SQL Server
如果存在 (Select 1 FROM sys.objects Where type = ‘U’ and name in (‘YourTableName1’, ‘YourTableName2’)) Begin Select * From Public.Table1 Union Select * From Public.Table2 End