mysql自连接
mysql有时在信息查询时需要进行对自身连接(自连接),所以我们需要为表定义别名。我们举例说明,下面是商品采购表,我们需要找到采购价格比惠惠高的所有信息。

一般情况我们看到这张表我们第一时间用语句进行操作:

SELECT * FROM shoping WHERE price>27
1
可想而知,这是有多么简单,假设你并不知道数据库表详细数据或者数据量相当庞大呢?作为一个数据库管理员,我们就要用别的方式迅速找出所需要的数据。

分步查询
最简单的一种方式,也是最容易想到操作:

SELECT price FROM shopping WHERE name='惠惠' //得出price查询结果为27
SELECT * FROM shopping WHERE price>27

与采用自连接的方式相比,这种方法需要对中间结果进行人工干预,显然不利于程序中的自动处理操作。

自连接方式:
SELECT b.* 
from shopping as a,shopping as b
where a.name='惠惠' 
and a.price<b.price 
order by b.id

三层自连接查询

SELECT   c.dept_name area ,  b.dept_name as city ,  a.* 
from sys_dept as a,sys_dept as b ,sys_dept as c
where a.parent_id= b.dept_id 
and   b.parent_id= c.dept_id
and   a.agency_id >= -1 
order by b.dept_id 

我们可以获取到如下表信息:

注意点:

别名 a,b虽然名称不同,但是同一个表,定义别名的目的是更方便在自身进行删选。
执行select通过(中间表)所得到的b.*,,就是最终结果。
子查询
子查询也是常用的一种方式,就是在select里嵌套select。实现代码如下:

SELECT * FROM shopping 
WHERE price>(select price from 'shopping' where name='惠惠')

所得结果如下所示,可见两种方式所得结果相同:

JOIN
INNER JOIN
内关联的主要作用是在表中存在至少一个匹配时,就返回结果集,这里的inner join和join作用相同,所以一起介绍。
下面给出两张表,分别为goods和category表:

SELECT * FROM goods INNER JOIN category 
ON goods.id=category.goods_id 
ORDER BY gods.id

结果如下所示:

LEFT JOIN
LEFT JOIN 关键字会从左表 (table_name1) 那里返回所有的行,即使在右表 (table_name2) 中没有匹配的行。做项目时建议使用左关联。但是存在很多表关联的,一个表对a是左连接,但同时对b是右连接,这时加上右连接,写起来可能方便一些。
套用一开始的两张表,进行左关联查询:

SELECT goods.*,category.cate_name 
FROM goods LEFT JOIN category 
ON goods.id=category.goods_id 
ORDER BY goods.id

RIGHT JOIN
RIGHT JOIN 关键字会右表 (table_name2) 那里返回所有的行,即使在左表 (table_name1) 中没有匹配的行。套用一开始的两张表进行右关联查询:

mysql 自连接与内连接相关推荐

  1. mysql内连接的自连接_mysql 内连接、外连接、自连接

    一)内连接(等值连接):查询客户姓名,订单编号,订单价格 --------------------------------------------------- select c.name,o.isb ...

  2. MySQL数据库的内连接,左外连接和右外连接查询

    1.首先谈一谈数据库的连接查询有什么作用? 简单的说就是在实际生活中,当我们查询某些数据的时候,一张表不可能为我们提供足够多的数据,其次在数据库的设计的时候,考虑到表的结构和复杂性,会设计多张分类表, ...

  3. MySQL中的内连接和外连接

    一.MySQL内连接(INNER JOIN) 内连接,又称为等值连接,是最常见的连接类型.它根据两个(或多个)表中具有相同列值的行来创建一个新的结果表.在内连接中,只有通过连接条件匹配的行才会被包含在 ...

  4. SQL自连接,内连接,区别

    自连接 1.自连接是在同一个表上实行多表连接,进行自连接时须先将数据表虚拟化另一个表.(就像照镜子) 2.语法 SELECT a.column_name, b.column_name... FROM ...

  5. mysql多表内连接查询

    -- 查询用户信息和对应的订单信息 SELECT * FROM USER INNER JOIN orderlist ON `orderlist`.`uid`=user.`id`;`user`-- 查询 ...

  6. MySQL数据库连接查询(内连接)

    连接查询 1. 交叉连接(笛卡尔积)Cross Join 实例1.1:完成车辆表与线路表的交叉连接 代码如下: -- 1.1实现线路表与车辆表笛卡尔积 SELECT * FROM line CROSS ...

  7. mysql inner join_MySQL内连接(INNER JOIN)

    MySQL INNER JOIN子句将一个表中的行与其他表中的行进行匹配,并允许从两个表中查询包含列的行记录. INNER JOIN子句是SELECT语句的可选部分,它出现在FROM子句之后. 在使用 ...

  8. mysql 笛卡尔积_Mysql内连接、左连接会出现笛卡尔积的理解

    先简单解释一下笛卡尔积. 现在,我们有两个集合A和B. A = {0,1}     B = {2,3,4} 集合 A×B 和 B×A的结果集就可以分别表示为以下这种形式: A×B = {(0,2),( ...

  9. 【MySQL】十五、内连接(等值连接,非等值连接,自连接)

    文章目录 1. 内连接 2. 非等值连接 3. 自连接 1. 内连接 内连接最大的特点是:条件是等量关系. 案例:查询每个员工的部门名称,要求显示员工名和部门名. 从emp表中取ename,从dept ...

最新文章

  1. 【效率】微软开源最强Python自动化神器!不用写一行代码!
  2. React Native集成Redux框架讲解与应用
  3. 一、linux搭建jenkins+github详细步骤
  4. C#表格文字多收缩样式
  5. html ace编辑器,Tiny-editor
  6. 众推架构的进一步讨论
  7. Linux中apt install的lock问题
  8. java后端做教育视频网站源码_【Java并发面试点】看这一篇应该是够了
  9. Nacos简介和安装
  10. 访问修饰符 public private protected default
  11. java akka actor性能_Akka系列(一):Akka简介与Actor模型
  12. TensorFlow 学习可视化 TensorBoard 简易教程
  13. 浅析智慧消防巡检系统在高速公路隧道的应用
  14. Java中ElasticSearch的各种查询(普通,模糊,前缀,高亮,聚合,范围)
  15. 英语形容词的排列顺序 -- 重点记忆
  16. CFS任务放置代码详解
  17. 【代码质量】嵌入式编程节约内存技巧
  18. 微型计算机百度云,STONE_百度云资源_盘多多如风搜_盘搜搜_哎哟喂啊
  19. java textpad_TextPad 和JDK使用方法
  20. IE6,IE7中 按钮的宽度随着内容的增多而增长

热门文章

  1. Oracle用户管理和授权
  2. IDEA之翻译器的妙用Translation
  3. 王牌英雄(Awesomenauts)研究报告
  4. NO.6网工学习之QINQ
  5. MFC 初始化D3D
  6. D3.js实现带动画效果的柱状图
  7. 频谱、频谱密度、能量谱密度、功率谱密度
  8. 网易2018校园招聘:游历魔法王国 [python]
  9. 刚体6D位姿估计方法综述
  10. Docker环境undertow线程数不足问题探究