SQL-联合查询

联合查询:可以合并多个相似的选择查询的结果集。在关系型数据库中,通过将两个或多个表格进行合并,从这些表中检索出所需的信息。

使用关键字: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。这些操作符在实现特定类型的联合查询时也非常有用。

posted @ 2023-10-11 09:38  娜乌西卡在路上  阅读(196)  评论(0)    收藏  举报