联合查询:可以合并多个相似的选择查询的结果集。在关系型数据库中,通过将两个或多个表格进行合并,从这些表中检索出所需的信息。
使用关键字:union和union all
关键字的区别:union去除重复记录(distinct 默认),union all不去去除重复记录。
order by的使用
在MySQL中,
1、union操作符将多个select语句的结果合并为一个结果集,union操作符并不会保留每个select语句中的原始顺序,如果在union之后使用order by子句进行排序,排序会受到影响。
2、使用union或union all 操作符时,MySQL会尝试优化查询以提高性能,会导致结果集的顺序发生变化。尤其是使用order by子句对结果集进行排序时,可能会出现意想不到结果。
为了避免潜在的问题,可以在每个select语句中使用order by 子句来确保每个结果集的顺序,而不是在union之后的最终结果集上使用order by
联合查询
1、查询同一张表
例如:A、查询同一张表,需求相同时
(select * from students where sex=“男” order by age)
union
(select * from students where sex=“女” order by age)
B、查询同一张表,需求不同:查询学生信息,男生年龄升序,女生年龄降序
(select * from students where sex=“男” order by age asc limit 9999999)
union
(select * from students where sex=“女” order by age desc limit 9999999)
注意:在子句中,使用order by 不使用limit 会被语法分析器优化分析时,去除。如果要order by 生效,必须搭配limit。使用限定的最大数既可。
2、多表查询
多张表的结构(列数和数据类型)要求一致,联表查询中每个子查询应该具有相同数量的列,并且每列的数据类型应该相似或兼容。
例如:一个表中字段A使用整型,另一个表中字段A使用字符类型,则可能导致查询错误。
除了union和union all 中文,还有其他操作符,例如:INTERSECT和EXCEPT。这些操作符在实现特定类型的联合查询时也非常有用。
标签:union,使用,查询,操作符,联合,SQL,order,select From: https://www.cnblogs.com/rensonghua/p/17756243.html