首页 > 数据库 >SQL-联合查询

SQL-联合查询

时间:2023-10-11 09:58:39浏览次数:55  
标签:union 使用 查询 操作符 联合 SQL order select

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

使用关键字: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

相关文章

  • SqlServer中获取数据库中每个表的行数
    SqlServer中获取数据库中每个表的行数CREATETABLE#RowCounts(NumberOfRowsBIGINT,TableNameVARCHAR(128))EXECsp_MSForEachTable'INSERTINTO#RowCountsSELECTCOUNT_BIG(*)ASNumberOfRows,''?''asTableNameFROM?'SELECTTableName,Num......
  • mysql 行锁,间隙锁,临键锁
    mysql中的行锁,临键锁,间隙锁都是为了解决innodb引擎下事务隔离级别的一系列排他锁行锁:也称为记录锁,当我们对mysql表中的某一条记录,或者唯一索引加锁的时候,innodb会默认对这一行记录进行加锁,避免其他事务对其进行修改间隙所:顾名思义,就是锁定一个索引的区间,在普通索引或者唯一索......
  • 2023_10_10_MYSQL_DAY_02_笔记
    2023_10_10_MYSQL_DAY_02_笔记#在FROM子句中使用子查询SELECTa.ename,a.sal,a.deptno,b.salavgFROMempa,(SELECTdeptno,AVG(sal)salavgFROMempGROUPBYdeptno)bWHEREa.deptno=b.deptnoANDa.sal>b.s......
  • 2023_10_10_MYSQL_DAY_02_课后题
    2023_10_10_MYSQL_DAY_02_课后题#06章1--7题#1.查询10号部门所有员工的员工姓名,员工工资,工资级别。SELECTe.ename员工姓名,e.`sal`员工工资,s.`grade`工资级别FROMempe,salgradesWHEREe.`deptno`=10ANDe.`sal`BETWEENs.`losal`ANDs.`hisal`;#2.查询2......
  • MySQL5.7 windows安装
    安装Mysql前:​ 1、如果:你(曾经安装过),需要(先卸载干净),否则是(装不上)的。所以先谈(卸载)​2、如果:你没有(安装过),这是(第一次安装),请直接看(第2部分)Mysql安装教程。1、Mysql彻底卸载分为三个步骤: 1、卸载Mysql(软件) 2、删除Mysql(残留文件) 3、删除mysql(注册表) 4、重启电......
  • mysql 索引(待补充)
    一、索引1、什么是索引在关系数据库中,索引是一种数据结构,他将数据提前按照一定的规则进行排序和组织,能够帮助快速定位到数据记录的数据,加快数据库表中数据的查找和访问速度。像书籍的目录、文件夹、标签、房号....都可以帮助我们快速定位,都可以视为索引。能实现快速定......
  • docker入门加实战—从部署MySQL入门docker
    docker入门加实战—从部署MySQL入门dockerdocker部署MySQL输入如下命令:dockerrun-d\--namemysql\-p3306:3306\-eTZ=Asia/Shanghai\-eMYSQL_ROOT_PASSWORD=123\mysql部署成功截图如下:当执行命令后,Docker做的第一件事情,是去自动搜索并下载了MySQL,......
  • SQLAlchemy学习-13.分页查询'Query' object has no attribute 'paginate'
    前言用过Flask-SQLAlchemy的应该知道,它提供了一个分页查询方法paginate(),方便我们实现在后端查询分页。但是单独使用SQLAlchemy却没有paginate方法,会报错:AttributeError:'Query'objecthasnoattribute'paginate'SQLAlchemy没有paginate方法Flask-SQLAlchemy分页查询参......
  • SQLAlchemy学习-12.查询之 order_by 按desc 降序排序
    前言sqlalchemy的query默认是按id升序进行排序的,当我们需要按某个字段降序排序,就需要用到order_by。order_by排序默认情况下sqlalchemy的query默认是按id升序进行排序的res=session.query(Project).all()print(res)#[<Project(id='1',project_name='string'.........
  • sql server主键索引
     添加ALTERTABLE表名ADDCONSTRAINTPK_XXXPRIMARYKEYNONCLUSTERED(字段)go唯一,非聚集索引ALTERTABLE表名ADDCONSTRAINTPK_XXXPRIMARYKEYCLUSTERED(字段)go唯一,聚集索引  删除ALTERTABLE表名DROPCONSTRAINTPK_XXXgo ......