MySQL—连表查询

2023-10-27

目录

1.连接查询—内连接

1.1隐式内连接

1.1.1等值连接和非等值连接

1.2.显示内连接—inner join

2.连接查询—外连接

2.1 左外连接 

 2.2 右外连接 

3.自连查询

 4.子查询

 5.组合查询

6.注意事项 

正确代码

错误示范 

 


1.连接查询—内连接

1.1隐式内连接

笛卡尔乘积,错误示范

select student.id ,teacher.t_id from student,teacher ;

 正确示范

 后面要加上条件证明两表有相同的字段

select s.id, t.t_id from student s,teacher t where s.teacher_id= t.t_id;

1.1.1等值连接和非等值连接

等值连接指的多表查询语句中的连接条件使用的是等号。

非等值连接指的是多表查询语句中的连接条件使用的不是等号而是>,>=,<,<=,!=以及使用between进行范围判断的称之为非等值连接。

 

1.2.显示内连接—inner join

-- 显示连接: A表 inner join B表 on 连表条件。 
2.查询每一个员工的姓名,及关联的部门的名称〔显式内连接实现)


select * from tb_emp  inner join tb_dept on tb_emp.dept_id=tb_dept.id;
select * from tb_emp e inner join tb_dept d on e.dept_id=d.id;

-- 上面的 inner可以省略。

select * from tb_emp e  join tb_dept d on e.dept_id=d.id;

2.连接查询—外连接

2.1 左外连接 

-- 语法: select 查询列集 from A表 left join B表 on 连表条件
-- 1.查询emp表的所有数据, 和对应的部门信息(左外连接)

select * from tb_emp e left outer join tb_dept d on e.dept_id = d.id;
select * from tb_emp e left join tb_dept d on e.dept_id=d.id;

 -- 2.查询dept表的所有数据,和对应的员工信息(右外连接)

 2.2 右外连接 

select * from tb_emp e right join tb_dept d on e.dept_id=d.id;

3.自连查询

自己和自己相连接查询。
select * from A表 join A表 on 连表条件。

 -- 1.查询员工及其所属领导的名字。你要查询的结果再一张表中,但是还不能使用单表查询得到结果。


select a.name,b.name from tb_emp a join tb_emp b on a.managerid=b.id;


-- 2.查询所有员工 emp及其领导的名字emp ,如果员工没有领导,也需要查询出来


select a.name,b.name from tb_emp a left join tb_emp b on a.managerid=b.id;

 4.子查询

一个查询的结果 作为另一个查询的条件 或者 临时表。
-- 查询市场部的员工信息-----
-- 子查询返回的结果一列一条记录。 这个时候可以用=

 


select * from tb_emp where dept_id=(select id from tb_dept where name='市场部')

-- 查询市场部和研发部员工的信息。in 
 -- -- 查询市场部和研发部员工的信息。
   -- a) 查询市场部和研发部的编号
     select id from tb_dept where name in('市场部','研发部')

   -- b) 再员工表中根据部门编号查询员工信息
  
  select * from tb_emp where dept_id in (select id from tb_dept where name in('市场部','研发部'))

 5.组合查询

多个查询的结果 组合到一起。
sql union sql --->把这两条sql查询的结果组合到一起。如果有重复记录则合并成一条。
sql union all sql--->把这两条sql查询的结果组合到一起。如果有重复记录,不合并。 

注意: 这两条sql返回的字段必须一样。

    
    select name from tb_emp where salary>8000
    UNION 
    select * from tb_emp where age>40;

6.注意事项 

如果查询语句中出现了多个表中都存在的字段,则必须指明是哪个表中的字段

 建议:从sql 优化的角度,建议多表查询时,每个字段前都指明其所在的表。

正确代码

select s.id, t.t_id from student s,teacher t where s.teacher_id= t.t_id;

可以给表起别名,在 SELECT 和 WHERE 中使用表的别名。 

如果给表起了别名,一旦在 SELECT 或 WHERE 中使用表名的话,则必须使用表的别名,而不能再使用表的原名。

错误示范 

select s.id, t.t_id from student s,teacher t where student.teacher_id= teacher.t_id;

 

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

MySQL—连表查询 的相关文章

  • 这个 SQL DELETE FROM 语法有什么问题?

    我正在尝试删除 96k 记录 删除表 xoops bb posts text 页面中没有与 xoops bb posts 匹配的 post id 的所有记录 此查询返回 91k 条记录 SELECT FROM xoops bb posts
  • 使用 Hibernate 在 MySQL 中存储字节数组

    我正在尝试保存带有字节数组字段的实体 我在 MySQL 数据库之上使用 Hibernate 和 JPA 这是字段定义 对于嵌入式 H2 数据库来说效果很好 Entity name blob public class Blob Lob Bas
  • MySQL有两个不同的密码?

    我确信它们是不同事物的密码 但我不确定是什么 当在终端连接到 MySQL 时 我输入 usr LOCAL mysql BIN mysql h host u username p然后系统会提示我输入密码 密码是 但是当使用 PHP 连接到 M
  • Mysql - Mysql2::错误:字符串值不正确:

    所以我建造了一个刮刀并拉动一些物体 问题是有些是外语 它使 mysql 数据库有点崩溃 这是我得到的错误 知道我能用这个做什么吗 谢谢 Mysql2 错误 列的字符串值不正确 xC5 x8Dga 第 1 行的 描述 插入sammiches
  • 如何使PHP中的激活链接过期?

    我有一个 php 脚本 它通过电子邮件向用户发送激活链接 以便他们可以激活他们的帐户 链接是这样的 mysite com activation phpid id 20 如何创建 24 小时后过期的链接 我还没有尝试过任何东西 因为我找不到任
  • Preg_replace() 删除除查询结尾之外的所有内容

    首先 为我糟糕的英语感到抱歉 我有这样的疑问 SELECT t1 SELECT COUNT FROM table a t2 WHERE t1 id t2 id c AND t2 status 1 AS aula FROM table c t
  • mySQL MATCH 跨多个表

    我有一组 4 个表 我想对其进行搜索 每个都有全文索引 查询可以使用每个索引吗 CREATE TABLE categories id int 5 unsigned NOT NULL auto increment display order
  • MySql 最后插入 ID,连接器 .net

    我正在使用 MySql Connector net 我需要获取最后一个查询生成的插入 id 现在 我假设返回值是MySqlHelper ExecuteNonQuery应该是最后一个插入id 但它只返回1 我正在使用的代码是 int inse
  • 显示表 FULLTEXT 索引列

    我希望运行一个查询 该查询将返回表中全文索引的列列表 该表采用 MyISAM 格式 我将使用 php 来构建查询 理想情况下 我会运行查询 它会返回信息 以便我可以构造一个以逗号分隔的列字符串 例如 名 姓 电子邮箱 这在 MySQL 中可
  • java mysql 准备好的语句

    我正在尝试使用 java 向数据库中进行简单的插入 它告诉我我的 sql 语法已关闭 但是 当我复制打印出来的字符串并将其放入 phpmyadmin 中的 sql 命令中时 它会正确执行该命令 并且我似乎无法弄清楚 java 中的字符串查询
  • 如何使用 MySQL 的 LOAD DATA LOCAL INFILE 在导入 CSV 时将字符串日期更改为 MySQL 日期格式

    我正在使用 MySQL 的 LOAD DATA LOCAL INFILE SQL 语句将数据从 CSV 文件加载到现有数据库表中 下面是一个 SQL 语句示例 LOAD DATA LOCAL INFILE file csv INTO TAB
  • PHP 绑定“bigint”数据类型(MySQLi 准备好的语句)

    studentId 57004542323382 companyOfferId 7 sql INSERT INTO studentPlacement companyOfferId studentId VALUES if stmt db gt
  • 当sql连接中存在两个同名列时,如何从一个表列中获取值

    当我连接两个具有相同名称列的表时 我目前面临着尝试获取值的问题 例如 table1 date和table2 date 每个表中的日期不同 我将如何获取 日期 本例中的表1 我目前正在跑步 while row mysqliquery gt f
  • 为什么这会返回资源 id #2? [复制]

    这个问题在这里已经有答案了 可能的重复 我如何从 PHP 中的 MySql 响应中 回显 资源 id 6 https stackoverflow com questions 4290108 how do i echo a resource
  • MySQL 使用 ALTER IGNORE TABLE 出现重复错误

    我的 MySQL 中有一个有重复项的表 我尝试删除重复项并保留一项 我没有主键 我可以通过以下方式找到重复项 select user id server id count as NumDuplicates from user server
  • MYSQL 区分大小写的 utf8 搜索(使用 hibernate)

    我的登录表具有 utf8 字符集和 utf8 排序规则 当我想要检查用户名并检索该特定用户名的其他信息时 hql 查询会为我提供小写和大写相同的结果 我应该如何处理适用于案例的 HQL 查询 我使用 Mysql 5 和 java hiber
  • MySQL PHP邮政编码比较具体距离

    我试图找出比较一个邮政编码 用户提供的 和一大堆其他邮政编码 现在大约有 200 个邮政编码 之间的距离的最有效方法 相对于加载时间 但它会随着时间的推移而增加 我不需要任何精确的东西 只是在球场上 我下载了整个美国的邮政编码 csv 文件
  • Apache、PHP 和 MySQL 可移植吗?

    我可以在外部硬盘上运行 Apache PHP 和 MySQL 吗 我需要这个 因为我在不同的地方工作 计算机 有时我没有安装和配置所有使用的应用程序 当然可以 XAMPP http www apachefriends org en xamp
  • MySQL 查询计算上个月

    我想计算上个月的订单总额 我收到了从当前日期获取当月数据的查询 SELECT SUM goods total AS Total Amount FROM orders WHERE order placed date gt date sub c
  • 将第三个表链接到多对多关联中的桥接表

    设计这个数据库的正确方法是什么 这是我设置表格的方式 我在名为 教师 的表和名为 仪器 的表之间存在多对多关系 然后我有一个连接两者的桥接表 我想将另一个表与 BRIDGE 表关联起来 意思是乐器 老师的组合 该表有 3 行 指定老师可以教

随机推荐

  • 5. 筛选和过滤

    文章目录 筛选和过滤 条件筛选 提取 抽样 最值 Index np argmax argmin np argsort 筛选和过滤 这小节与索引和切片有点类似 但倾向于从 整体 中统一筛选出 符合条件 的内容 而索引和切片更多的是依照 某种方
  • C++编译警告:warning C4305: 'initializing' : truncation from 'const double' to 'float'

    float a 4 14E 3 float a 3 1 类似的语句在编译的时候 会产生如下警告 warning C4305 initializing truncation from const double to float 虽然说不会导致
  • Apriori算法详解之【一、相关概念和核心步骤】

    感谢红兰整理的PPT 简单易懂 现在将其中精彩之处整理 与大家分享 一 Apriori算法简介 Apriori算法是一种挖掘关联规则的频繁项集算法 其核心思想是通过候选集生成和情节的向下封闭检测两个阶段来挖掘频繁项集 Apriori 先验的
  • 36奇迹发布网_8点1氪:王思聪已被取消限制消费令;拼多多大跌近23%,下一季度会继续“百亿补贴”;苹果发布千元iPhone11智能手机壳...

    11月20晚间 查询中国执行信息公开网发现 王思聪已不在限制消费人员名单之中 文 梦想家菜菜 邹黄晶 整理 Kr Lab 点击上方 36氪随声听 一键收听大公司热门新闻 听完音频记得添加进入 我的小程序 中哟 蜗牛移动 据IPO早知道 蜗牛
  • C++:auto&decltype

    auto用法 总述 C 11 auto可以在声明变量的时候根据变量初始值的类型自动为此变量选择匹配的类型 类似的关键字还有decltype 举个例子 auto的作用就是为了简化变量初始化 如果这个变量有一个很长很长的初始化类型 就可以用au
  • CAN学习笔记3:STM32 CAN控制器介绍

    STM32 CAN控制器 1 概述 STM32 CAN控制器 bxCAN 支持CAN 2 0A 和 CAN 2 0B Active版本协议 CAN 2 0A 只能处理标准数据帧且扩展帧的内容会识别错误 而CAN 2 0B Active 可以
  • BTC-数据结构

    哈希指针 hash pointers 普通的指针存储的是某个数据在内存中的首地址 哈希指针不仅要保存地址 还要保存数据的哈希值 通过哈希指针不仅能找到数据的位置 还能检测出数据有没有被篡改 因为保存了哈希值 区块链 比特币的基本数据结构即区
  • 泰勒图(Taylor diagram)

    感谢大家的收藏 我会继续完善这篇博客的 文章目录 定义 例子 拓展 英文原版定义 python绘图方法 定义 泰勒图 泰勒图1常用于评价模型的精度 常用的精度指标有相关系数 标准差以及均方根误差 RMSE 一般而言 泰勒图中的散点代表模型
  • PySpark环境配置

    首先 要知道PySpark是Spark为Python提供的API库 因此使用 pip install pyspark 下载pyspark不等于下载了spark 因此 配置pyspark环境 首先需要下载spark 1 linux下载spar
  • Android设备启动时出现pop音

    Android设备启动时出现pop音 Android设备启动时出现pop音 环境介绍 原因定位 Android混音 TEE SINK Android HAL层文件 异常原因 解决方案 解决方案应用 Android设备启动时出现pop音 针对
  • 使用CLion创建Cmake项目,使用GoogleTest和GoogleMock对代码进行测试

    文章目录 1 环境准备 2 CLion创建项目 3 编写测试用例 4 复杂测试用例 1 环境准备 注意版本匹配 我本地是g 8 1 0 的 最开始装了GoogleTest最新版1 10 0结果发现不能用 又回去下载旧的版本 g 8 1 0
  • opkg 不能更新和安装openwrt软件的方法

    首先 将所有的IPK 放在自己的虚拟HTTP服务器上 2 用Telnet进入路由器 使用VI编辑器 编程Opkg conf 命令 vi etc opkg conf3 修改文件 将第一行HTTP后面的部分 修改为第二步中查看到的IP地址 如果
  • c++ 泛型

    目录 1 什么是泛型 2 为什么需要泛型 3 泛型如何用 参考 泛型是什么 C 泛型编程又是什么 1 什么是泛型 泛型是什么 C 泛型编程又是什么 泛型 实质上就是不使用具体数据类型 例如 int double float 等 而是使用一种
  • 不同的子序列 -- 动规

    115 不同的子序列 class NumDistinct 115 不同的子序列 https leetcode cn problems distinct subsequences description def solution1 self
  • QT移植步骤

    1 在开发板的跟目录下新建两个目录 mkdir mini2440 mkdir tslib 2 拷贝相关的文件 2 1把PC机下面的 usr local Trolltech QtEmbedded 4 6 3 arm lib目录下面的所有文件全
  • 游戏开发unity xlua框架知识系列:obj引用分析

    参考 xLua的obj引用分析
  • 【论文笔记】ERNIE: Enhanced Representation through Knowledge Integration

    ERNIE Enhanced Representation through Knowledge Integration Created time July 26 2021 1 50 PM Last edited time July 30 2
  • 骨髓小游戏

    欢迎来到程序小院 骨髓 玩法 骨髓推塔小游戏 敌方士兵进入到我方高塔会毁坏建筑 我方可派兵前去迎战 我方 骑兵 长枪兵 弓兵 敌法 骷髅骑兵 骷髅长枪兵 骷髅弓兵 快去消灭敌人吧 开始游戏https www ormcc com play g
  • idea新建没有servlet选项怎么办 看这里

    idea新建没有servlet选项怎么办 解决方法 首先进入 配置 页面 将 src 标记成 Sources 文件 然后点击页面左侧的 facets 选项卡 勾选 sources root 中以 src 结尾的选项 即可在src目录下的文件
  • MySQL—连表查询

    目录 1 连接查询 内连接 1 1隐式内连接 1 1 1等值连接和非等值连接 1 2 显示内连接 inner join 2 连接查询 外连接 2 1 左外连接 2 2 右外连接 3 自连查询 4 子查询 5 组合查询 6 注意事项 正确代码