SQL語句中union all和union的區別以及用法


起因

一次滲透過程中目標使用的SQL Server有聯合注入,發現使用union all 不報錯,union報錯,同時還有一個就是字段的類型,發現類型不對也會報錯,貼張圖

union+all+select+123123,1,'2','3',null,null,null--+-    不報錯
union+select+123123,1,'2','3',null,null,null--+-         報錯

注意點:

1 union結果集種的列名總是等於第一個select語句中的類型。

2 union內部的select 語句必須擁有相同數量的列,列也必須有相似的數據類型。同時,每條select語句的列的順序必須相同。

3 如果子句中有 order by,limit 需要用括號()包起來,推薦將order by,limit放到所有子句之后,即對最終合並的結果來排序或篩選。

union 和union all的區別:

union聯合的結果集不會有重復值,如果要有重復值,則使用union all

union會自動壓縮多個結果集合中重復的結果,使結果不會有重復行,union all 會將所有的結果共全部顯示出來,不管是不是重復。

union:會對兩個結果集進行並集操作,不包括重復行,同時進行默認規則的排序。

union all:對兩個結果集進行並集操作,包括重復行,不會對結果進行排序。

1.sql Union用法
select 字段1 from 表名1 Union select 字段2 from 表名2;
2.sql Union All用法
select 字段1 from 表名1 Union all select 字段2 from 表名2;


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM