SQL语句中union all和union的区别以及用法

简介: 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;


相关文章
|
4月前
|
SQL XML Java
mybatis复习03,动态SQL,if,choose,where,set,trim标签及foreach标签的用法
文章介绍了MyBatis中动态SQL的用法,包括if、choose、where、set和trim标签,以及foreach标签的详细使用。通过实际代码示例,展示了如何根据条件动态构建查询、更新和批量插入操作的SQL语句。
mybatis复习03,动态SQL,if,choose,where,set,trim标签及foreach标签的用法
|
4月前
|
SQL 存储 安全
SQL Server用法
SQL Server用法
123 1
|
4月前
|
SQL XML Java
mybatis :sqlmapconfig.xml配置 ++++Mapper XML 文件(sql/insert/delete/update/select)(增删改查)用法
当然,这些仅是MyBatis功能的初步介绍。MyBatis还提供了高级特性,如动态SQL、类型处理器、插件等,可以进一步提供对数据库交互的强大支持和灵活性。希望上述内容对您理解MyBatis的基本操作有所帮助。在实际使用中,您可能还需要根据具体的业务要求调整和优化SQL语句和配置。
78 1
|
5月前
|
SQL 数据库
|
5月前
|
SQL 数据挖掘
|
5月前
|
SQL 存储 关系型数据库
|
5月前
|
SQL 关系型数据库 MySQL
8、SQL高级用法
8、SQL高级用法
23 0
|
4月前
|
关系型数据库 MySQL 网络安全
5-10Can't connect to MySQL server on 'sh-cynosl-grp-fcs50xoa.sql.tencentcdb.com' (110)")
5-10Can't connect to MySQL server on 'sh-cynosl-grp-fcs50xoa.sql.tencentcdb.com' (110)")
|
6月前
|
SQL 存储 监控
SQL Server的并行实施如何优化?
【7月更文挑战第23天】SQL Server的并行实施如何优化?
149 13
|
6月前
|
SQL
解锁 SQL Server 2022的时间序列数据功能
【7月更文挑战第14天】要解锁SQL Server 2022的时间序列数据功能,可使用`generate_series`函数生成整数序列,例如:`SELECT value FROM generate_series(1, 10)。此外,`date_bucket`函数能按指定间隔(如周)对日期时间值分组,这些工具结合窗口函数和其他时间日期函数,能高效处理和分析时间序列数据。更多信息请参考官方文档和技术资料。