java.sql.SQLSyntaxErrorException: ORA-01789: 查詢塊具有不正確的結果列數
原因: 發現是sql語句用union時的 兩個語句查詢的字段不一致
解決:將 2個 union 的sql語句,select的列,改為一樣的字段。
UNION用的比較多union all是直接連接,取到得是所有值,記錄可能有重復 union 是取唯一值,記錄沒有重復
1、UNION 的語法如下:
[SQL 語句 1]
UNION
[SQL 語句 2]
2、UNION ALL 的語法如下:
[SQL 語句 1]
UNION ALL
[SQL 語句 2]
效率:
UNION和UNION ALL關鍵字都是將兩個結果集合並為一個,但這兩者從使用和效率上來說都有所不同。
1、對重復結果的處理:UNION在進行表鏈接后會篩選掉重復的記錄,Union All不會去除重復記錄。
2、對排序的處理:Union將會按照字段的順序進行排序;UNION ALL只是簡單的將兩個結果合並后就返回。
從效率上說,UNION ALL 要比UNION快很多,所以,如果可以確認合並的兩個結果集中不包含重復數據且不需要排序時的話,那么就使用UNION ALL。
簡要回答:
UNION去重且排序
UNION ALL不去重不排序