MySQL基础---连接查询(等值连接与非等值连接)

2023-11-08

多个表格查询,

笛卡尔乘积现象;表1有m行,表2 有n行。  结果有m * n行

发生原因在于没有有效的连接条件

如何避免:添加有效的连接条件

方法:分类方法

按照年代分类:sql192标准和sql199标准

功能

        内链接:等值连接, 非等值连接,自连接

        外连接 :左外,右外,全外

        交叉连接

一般语法

SELECT 查询的列表
FROM 表1 别名1,表2 别名2
WHERE 表1.关键词= 表2.关键词;
【and 筛选条件】
【group by 分组字段】
【having 分组后的筛选】
【order by 排序ASC,DESC】

实操:首先你需要选择在两个表格中都存在的一个匹配项目, 就像是excel中的vlookup一样匹配当中的相似内容,这样才能设立连接条件

假设我有一个班级学生个人信息表(stu_info),里面有学号(stu_id),然后我有一张只有学号的期末成绩表(score_count),我需要将这两个表连接起来,显示对应名字(name)和期末成绩(score),操作如下。

SELECT name 姓名,score 期末成绩
FROM stu_info,score_count
WHERE stu_info.'stu_id'=score_count.'stu_id'
# WHERE 姓名.'stu_id'=期末成绩.'stu_id'

可以加筛选选项,或者排序判断等,任何表格的功能都是可以在这个等值查询上面实现的。

多个表的等值连接

跟两个表一样,将需要匹配的内容放在where 语句里面,并列的用and添加,可以添加多个。

非等值连接

非等值连接在于判断where语句的情况,假设有一个按照年龄区分的表格,10-20岁为小,20-35为中,35-60为老,然后我们需要匹配公司的全体员工属于哪一个范围以内的时候,可以采用在非等值连接,大致的程序思路如下。

SELECT age
FROM employees,age_count
WHERE employees BETWEEN age.low_age AND age.high_age;

自连接

自连接顾名思义就是与自己的表进行判断匹配,平时我们可能看到过excel表中间有些内容是把某个属性匹配,比如一个学校有教职员工和学生的总表,学生也有代码教职员工也有自己的编码,学生还会有一个导师编码,这里就可以匹配学生所述的导师姓名

SELECT s.all_id,s.name_id,t.all_id,t.name
FROM all_list s,all_list t
WHERE s.学生导师id = t.老师编号id
【and 筛选】
【group by 分组】
【having 分组后筛选】
【order by asc升序,desc降序】

总结1.多表连接的结果为多表的交集部分

2.n表连接,至少需要n-1个连接条件

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

MySQL基础---连接查询(等值连接与非等值连接) 的相关文章

随机推荐

  • Angular 表单验证

    模板驱动验证 使用模板驱动验证需要依赖于原生的HTML表单验证器 Angular 会用指令来匹配具有验证功能的这些属性 原生的HTMl验证器主要分两种 通过语义类型来进行定义 通过验证相关的属性来进行定义 语义类型 Input type C
  • Autoregressive Models

    The autoregressive model is one of a group of linear prediction formulas that attempt to predict an output y n of a syst
  • Matplotlib-快速上手-2

    Matplotlib Advanced 概述 一 基本可操作对象 1 1 Lines对象 1 2 Axes对象 重要 1 3 Ticks对象 1 4 Legend对象 1 5 Figure对象 1 6 Savefig对象 1 7 小总结 二
  • RabbitMq中间件下载与安装(window版+Centos7)

    RabbitMQ下载与安装 window版 rabbitmq下载安装 小阿杰的博客 CSDN博客 https www cnblogs com easy5weikai p 16217858 html Centos7安装RabbitMQ 安装
  • C语言printf中的自增自减运行

    源程序 int main int i 0 printf d d d n i i i return 0 我们预期的结果应该是 0 0 0 但实际结果为 0 1 0 原理我也弄得不是很明白 我借鉴了几篇文章 理解到了计算的方法 大家都知道pri
  • 在datagridview中添加button按钮

    前言 Net的DataGridView控件中 提供了一种列的类型 叫 DataGridViewButtonColumn 这种列类型是展示为一个 按钮 可以给button赋予相应的text 并且 此button可以用来做处理事件的判断依据 D
  • Linux系统管理员非常使用的几款工具推荐

    1 ExplainShell com 命令解释 对于Linux用户来说每天都会写各种命令和脚本 那么你可以使用这个网站工具来查看命令式如何工作的 这样可以避免不必要的错误出现 也是一个很好的学习命令的方式 2 BashrcGenerator
  • 使用 Builder 构建对象

    遇到多个构造器参数时 要考虑使用构建器 当遇到成员变量较多的类时 使用构造方法初始化对象会使得代码的可读性以及规范性变差 比如想知道某个参数的含义时必须要查看构造方法的定义源码 而且如果不消息颠倒了参数的顺序 编译器可能也不会报错 可以使用
  • 【Java集合 4】java character

    Java学习路线 搬砖工逆袭Java架构师 简介 Java领域优质创作者 CSDN哪吒公众号作者 Java架构师奋斗者 扫描主页左侧二维码 加入群聊 一起学习 一起进步 欢迎点赞 收藏 留言 目录 一 前言 二 ASCII控制字符 三 AS
  • Oracle数据库的启动

    lsnrctl start 启动监听 sqlplus nolog SQL gt conn as sysdba SQL gt startup 启动数据
  • 提高性能 MSSQL百万数据量 值得注意的30条优化技巧

    1 对查询进行优化 应尽量避免全表扫描 首先应考虑在 where 及 order by 涉及的列上建立索引 2 应尽量避免在 where 子句中对字段进行 null 值判断 否则将导致引擎放弃使用索引而进行全表扫描 如 select id
  • JSP动态网页开发技术

    一 学习目标 1 JSP概述 2 JSP指令 3 JSP 隐式对象 二 重点知识 1 JSP概述 JSP是什么 1 JSP全称Java Server Pages 是一种动态网页开发技术 它使用JSP标签在HTML网页中插入Java代码 标签
  • android控制电脑,安卓手机远程控制电脑教程详解

    当我们出门在外 没有电脑在身边 但又急需远程处理电脑上的事务时 怎么办呢 自从锤子出了手机远程协助后 没有锤子的人就急了 这里有个可以让所有Android手机和ios手机实现远程协助功能的小技巧 能 远程控制 远程控制 远程控制 windo
  • 初始gensim

    1 import jieba 2 import gensim 3 from gensim import corpora 4 from gensim import models 5 from gensim import similaritie
  • 复制CSDN文章,去掉代码前面行号的方法(及一些正则表达式小技巧)

    分享一些平时工作中常用的正则表达式小技巧 一 去掉代码前面行号的方法 idongchen modify 2018 12 5 csdn的markdown解析器蛮恶心的文章整体复制下来总有行号在前面 可以用正则找到这些行号给去掉就好 带点的 s
  • sqli-labs(29-31)

    序 这三关都是双服务器问题 网上很多教程都只考虑了apache 其实是php apache jsp tomcat 环境的搭建已经写在了另外一篇博客中 这里再推荐一下一个大牛写得很好的博客 里面把每关的原理都讲得很清晰 但是他里面关于本关的原
  • CV-对比学习-模型:MoCo/SimCLR/BYOL/SimSiam

    很多大佬认为 深度学习的本质就是做两件事情 Representation Learning 表示学习 和 Inductive Bias Learning 归纳偏好学习 在表示学习方面 如果直接对语义进行监督学习 虽然表现很好 但是它需要很多
  • lvs负载均衡、LVS集群部署

    四 LVS集群部署 lvs给nginx做负载均衡项目 218lvs DR 负载均衡器 yum y install ipvsadm 安装这个工具来管理lvs 设置VIP192 168 142 120 创建ipvsadm的文件用来存放lvs的规
  • c语言 如何创建txt文件,C++文本文件读写操作详解

    前面章节中 已经给大家介绍了文件流对象如何调用 open 方法打开文件 并且在读写 又称 I O 文件操作结束后 应调用 close 方法关闭先前打开的文件 那么 如何实现对文件内容的读写呢 接下来就对此问题做详细的讲解 在讲解具体读写文件
  • MySQL基础---连接查询(等值连接与非等值连接)

    多个表格查询 笛卡尔乘积现象 表1有m行 表2 有n行 结果有m n行 发生原因在于没有有效的连接条件 如何避免 添加有效的连接条件 方法 分类方法 按照年代分类 sql192标准和sql199标准 功能 内链接 等值连接 非等值连接 自连