SQL 多表查询

文章目录

  • 多表查询的分类
  • 等值连接
  • 非等值连接
  • 自连接
  • 非自连接
  • 内连接
  • 外连接
    • 左外连接
    • 右外连接
    • 满外连接
  • SQL连接 JOIN
  • SQL99 语法新特性 自然连接 NATURAL JOIN & USING

多表查询的分类

  • 等值连接 VS 非等值连接
  • 自连接 VS 非自连接
  • 内连接 VS 外连接

等值连接

关联的表有连接字段

select ci.vbillno, ci.infodate, ci.bankaccount, ci.oppbankaccount,bb.accname as oppunitname, oo.code as pk_org, ci.moneyy, ci.memo, bc.code as currtypeCode
from cmp_informer ci
left join bd_currtype bc on bc.pk_currtype = ci.pk_currtype
left join org_orgs oo on oo.pk_org = ci.pk_org
left join bd_bankaccbas bb on bb.accnum = ci.oppbankaccount
where ci.dr = 0and ci.direction = 'receivemoney'and ci.generateflag ='hasrelease'

非等值连接

关联的表没有连接字段

select e.last_name,e.salary,j.grade_level
from employees e,job_grades j
where e.salary between j.lowest_sal and j.highest_sal

在这里插入图片描述

自连接

自己连接自己

select emp.employee_id,emp.last_name,mgr.empliyee_id,mgr.last_name
from employees emp,employees mgr
where emp.manager_id = mgr.employee_id

在这里插入图片描述

非自连接

不同的表连接查询

内连接

只查询左表和右表满足where条件的数据,也就是合并具有同一列的两个以上的表的行,结果集中不包含一个表与另一个表不匹配的行

select last_name,dapartment_name,city
from employees e 
inner join departments d on e.department_id = d.department_id
inner join locations l on d.locateion_id = l.location_id

外连接

只查询左表和右表不满足where条件的数据,也就是合并具有同一列的两个以上的表的行,结果集中不包含一个表与另一个表不匹配的行之外,还查询到左表或右表中不匹配的行

左外连接

两个表在连接过程中除了返回满足连接条件的行以外,还返回左表中不满足条件的行

select last_name,dapartment_name,city
from employees e 
left outer join departments d on e.department_id = d.department_id
left outer join locations l on d.locateion_id = l.location_id

右外连接

两个表在连接过程中除了返回满足连接条件的行以外还返回右表中不满足条件的行

select last_name,dapartment_name,city
from employees e 
right outer join departments d on e.department_id = d.department_id
right outer join locations l on d.locateion_id = l.location_id

满外连接

mysql 不支持 full outer join

-- oracle
select last_name,dapartment_name
from employees e 
full outer join departments d on e.department_id = d.department_id-- mysql
-- UNION 会执行去重操作  UNION ALL 不会执行去重操作
--左上图 UNION ALL 右中图
select last_name,dapartment_name
from employees e 
left join departments d on e.department_id = d.department_id
union all
select last_name,dapartment_name
from employees e 
right join departments d on e.department_id = d.department_id
where e.department_id IS NULL;--左中图 UNION ALL 右上图
select last_name,dapartment_name
from employees e 
left join departments d on e.department_id = d.department_id
where d.department_id IS NULL;
union all
select last_name,dapartment_name
from employees e 
right join departments d on e.department_id = d.department_id--右下图 = 左中图 UNION ALL 右中图
select last_name,dapartment_name
from employees e 
left join departments d on e.department_id = d.department_id
where d.department_id IS NULL;
union all
select last_name,dapartment_name
from employees e 
right join departments d on e.department_id = d.department_id
where e.department_id IS NULL;

SQL连接 JOIN

在这里插入图片描述

SQL99 语法新特性 自然连接 NATURAL JOIN & USING

-- 自然连接 NATURAL JOIN 
-- 可以把自然连接理解为SQL92中的等值连接,它会帮你自动查询两张连接表中所有相同的字段,然后进行等值连接。
--不适用于两张表中有多个关联字段,你只想要某一个字段关联
select employee_id,last_name,department_name
from employees e
NATURAL JOIN departments d
--等同于
select employee_id,last_name,department_name
from employees e 
join departments d on e.department_id = d.department_id
and e.manager_id = d.manager_id-- USING连接
--USING(同名字段),简化JOIN ON
--不适用于自连接,也就是自己引用自己的表
select employee_id,last_name,department_name
from employees e 
join departments d USING(department_id)
--等同于
select employee_id,last_name,department_name
from employees e 
join departments d on e.department_id = d.department_id

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/736448.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【c语言 】 函数入门

🎈个人主页:豌豆射手^ 🎉欢迎 👍点赞✍评论⭐收藏 🤗收录专栏:C语言 🤝希望本文对您有所裨益,如有不足之处,欢迎在评论区提出指正,让我们共同学习、交流进步&…

MySQl基础入门⑦

上一章知识内容 分析数据且区分数据类型 看下表分析数据的特征,根据其特征确定相应的数据类型。 分析以上表格特征,确定数据类型,并对数据进行分类。分析数据后按固定长度字符串、可变长度字符串、整数、固定精度小数和日期时间数据类型对数…

spring-data-elasticsearch官方文档解读(部分)

Spring Data Elasticsearch 这里主要学习的是4.4.16版本的文档 1. 版本 下表显示了 Spring Data 发行版系列使用的 Elasticsearch 版本和其中包含的 Spring Data Elasticsearch 版本,以及引用该特定 Spring Data 发行版系列的 Spring Boot 版本。给出的 Elastics…

keepalived原理以及lvs、nginx跟keeplived的运用

keepalived基础 keepalived的原理是根据vrrp协议(主备模式)去设定的 vrrp技术相关原理 状态机; 优先级0~255 心跳线1秒 vrrp工作模式 双主双备模式 VRRP负载分担过程 vrrp安全认证:使用共享密匙 keepalived工具介绍 keepal…

Qt 绘制中的视口(setViewport)和窗口(setWindow)

重点 : 1.绘制(QPainter)可以设置视口,视口下设置窗口,而绘制的构件是以窗口为坐标系进行绘画。 2.先根据绘图设备的物理坐标系的矩形位置,设置视图视口setViewport,然后在以视口为区域去设置…

Web题记

[CISCN 2019华北Day2]Web1 告诉我们想要的东西在flag表和flag字段,那应该是sql注入,先试试 试了一些发现会被检查到,随便传数字 除了1和2有返回结果,其余的都报错,应该是数字型注入,抓包看看过滤了哪些 这个…

在DeepLn环境中安装VLLM与ChatGLM3

DeepLn | 智慧算力触手可及是一个挺便宜的算力租用平台,里面有大量的显卡可以租用。唯一美中不足的是,提供的pytorch版本低,只支持到2.01,为了匹配vllm,需要手动安装指定版本的pytorch。 vllm介绍 总体而言&#xff0…

如何关闭vscode灰色代码提示

vscode编辑rust代码时,rust-analyze插件会默认给代码添加一些提示(灰色代码),这部分代码 不会保存到文件,仅仅是为了你方便看各种变量的定义等。 但有时会觉得代码很乱,所以按以下方法可以把他隐藏。 1&am…

接收端编程、UDP编程练习、wireshrak抓包工具、UDP包头

我要成为嵌入式高手之3月6日Linux高编第十六天&#xff01;&#xff01; ———————————————————————————— 学习笔记 接收端 recvfrom #include <sys/types.h> #include <sys/socket.h> ssize_t recvfrom(int sockfd, void *buf, si…

【50天50个项目】旋转导航页面

实现效果&#xff1a; HTML <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8" /><meta name"viewport" content"widthdevice-width, initial-scale1.0" /><link rel"stylesheet&…

asp飞机订票-57-(说明+代码)

演示查看 http://pc.3q2008.Com/3q2008_Com/hkdp 目 录 1&#xff0e; 系统规划 3 1&#xff0e;1 行业背景 3 1&#xff0e;2 行业现状 3 1.2.1用户注册 3 1.2.2航班查询 3 1.2.3在线订票 3 1.2.4在线支付 3 1.2.5电子客票 4 1.2.6其它辅助产品与服务 4 1&#xff0e;3 需求…

[Mac软件]Adobe Illustrator 2024 28.3 intel/M1/M2/M3矢量图制作软件

应用介绍 Adobe Illustrator 是行业标准的矢量图形应用程序&#xff0c;可以为印刷、网络、视频和移动设备创建logos、图标、绘图、排版和插图。数以百万计的设计师和艺术家使用Illustrator CC创作&#xff0c;从网页图标和产品包装到书籍插图和广告牌。 绘制任意大小的标志 拥…

Timus#1005

C【动态规划】 #include<iostream> #include<vector> using namespace std; int main() {int n;cin >> n;vector<int> dp(100000 * 20);vector<int> a(n);int ans 0, cur 0;for (int i 0; i < n; i){cin >> a[i];ans a[i];}int sum…

探索直播美颜SDK背后的深度学习算法:智能化美肤与特效实现

美颜SDK背后的技术原理和深度学习算法近期很多读者向小编提问。今天&#xff0c;我将为大家深入讲解直播美颜SDK背后的深度学习算法&#xff0c;以及智能化美肤与特效实现的原理与应用。 一、美颜SDK的背后&#xff1a;深度学习算法 美颜SDK是一种集成了多种美颜功能的软件开…

【APB协议 UVM_Sequencer Driver Monitor_2024.03.04】

apb协议 写时序 地址、写信号、PSEL、写数据信号同时发生变化&#xff0c;即传输的第一个时钟被称为SETUP周期。在下个时钟上升沿,PENABLE信号拉高&#xff0c;表示ENABLE周期&#xff0c;在该周期内&#xff0c;数据、地址以及控制信号都必须保持有效。整个写传输在这个周期…

分享几个Google Chrome谷歌浏览器历史版本下载网站

使用selenium模块的时候&#xff0c;从官网下载的谷歌浏览器版本太高&#xff0c;驱动不支持&#xff0c;所以需要使用历史的谷歌浏览器版本 &#xff0c;这里备份一下以防找不到了。 驱动下载地址&#xff1a;https://registry.npmmirror.com/binary.html?pathchromedriver 文…

WiFi贴码推广能赚钱吗?掌握WiFi贴码推广技巧

“WiFi贴码推广能赚钱吗”是当前很多创业者关注的一个话题&#xff0c;WiFi贴码推广这一新兴的商业模式&#xff0c;是指商家在其门店或者特定场所提供免费WiFi&#xff0c;不需要输入密码wifi二维码即可连接&#xff0c;连接后合作商就会获得一定的收益。这种模式既方便了用户…

白酒:陈酿过程中的理化变化与香味成分的转化

在豪迈白酒的陈酿过程中&#xff0c;理化变化和香味成分的转化是形成与众不同风味和品质的重要环节。云仓酒庄深入了解和掌握陈酿过程中的理化变化规律&#xff0c;以及香味成分的转化机制&#xff0c;通过科学的方法和精细的管理&#xff0c;提升豪迈白酒的品质和口感。 首先&…

PaddlePaddle框架安装

提示&#xff1a;可在python环境中进行安装&#xff0c;避免环境污染&#xff0c;创建命令conda create -n xxx_name python3.9,激活conda activate xxx_name 第一步&#xff1a;查看计算机平台版本 在窗口输入查看命令&#xff0c;查看CUDA的版本 nvidia-smi 二、根据以下条件…

C语言---单身狗问题

1.单身狗初阶 这个题目就是数组里面有一串数字&#xff0c;都是成对存在的&#xff0c;只有一个数字只出现了一次&#xff0c;请你找出来 &#xff08;1&#xff09;异或是满足交换律的&#xff0c;两个相同的数字异或之后是0&#xff1b; &#xff08;2&#xff09;让0和每个…