搜索
首页数据库mysql教程MySQL学习足迹记录14--表别名和自联结_MySQL

bitsCN.com

MySQL学习足迹记录14--表别名和自联结

                                  

  本查询所用到的表:

         下面的表num代表公共汽车路线,如1路车,2路车,stop带表停车站点,如A站,B站

 

 表: 

route;+------+------+| num  | stop |+------+------+|    1 | A    ||    1 | B    ||    1 | C    ||    2 | B    ||    2 | C    ||    2 | D    |+------+------+

 

 

准备知识

1.使用表别名

  *表别名只在查询执行中使用

  *表别名不返回到客户机

 

  Example:  mysql> SELECT * from route AS r1           -> WHERE r1.num = 1;+------+------+| num  | stop |+------+------+|    1 | A    ||    1 | B    ||    1 | C    |+------+------+3 rows in set (0.00 sec)

 

 

 解析:

 相信理解表别名应该不费力,类似与列别名,表别名只是给表取另外一个名字而已,代表的还是相同的表

 

2.自联结

  *自联结通常作为外部语句来代替从相同表中检索数据时使用的子查询语句

  *使用表别名能在单条语句中多次使用相同的表

 

   下面给出一个简单的例子帮助理解自联结的原理

 

Example:

   

下面的语句查询的结果是共用同一车站的所有公交线

mysql> SELECT DISTINCT r2.num,r2.stop         -> FROM route AS r1,route AS r2         -> WHERE r1.stop = r2.stop          -> ORDER BY r2.stop;+------+------+| num  | stop |+------+------+|    1 | A    ||    1 | B    ||    2 | B    ||    1 | C    ||    2 | C    ||    2 | D    |+------+------+6 rows in set (0.00 sec)

 

 

解析:

第一句

mysql> SELECT DISTINCT r2.num,r2.stop                    -> FROM route AS r1,route AS r2;

 

 

为了详解,这里先去除DISTINCT关键字,并只截取下面的子句

 mysql> select * From route AS r1,route r2;+------+------+------+------+| num  | stop | num  | stop |+------+------+------+------+|    1 | A    |    1 | A    ||    1 | B    |    1 | A    ||    1 | C    |    1 | A    ||    2 | B    |    1 | A    ||    2 | C    |    1 | A    ||    2 | D    |    1 | A    ||    1 | A    |    1 | B    ||    1 | B    |    1 | B    ||    1 | C    |    1 | B    ||    2 | B    |    1 | B    ||    2 | C    |    1 | B    ||    2 | D    |    1 | B    ||    1 | A    |    1 | C    ||    1 | B    |    1 | C    ||    1 | C    |    1 | C    ||    2 | B    |    1 | C    ||    2 | C    |    1 | C    ||    2 | D    |    1 | C    ||    1 | A    |    2 | B    ||    1 | B    |    2 | B    ||    1 | C    |    2 | B    ||    2 | B    |    2 | B    ||    2 | C    |    2 | B    ||    2 | D    |    2 | B    ||    1 | A    |    2 | C    ||    1 | B    |    2 | C    ||    1 | C    |    2 | C    ||    2 | B    |    2 | C    ||    2 | C    |    2 | C    ||    2 | D    |    2 | C    ||    1 | A    |    2 | D    ||    1 | B    |    2 | D    ||    1 | C    |    2 | D    ||    2 | B    |    2 | D    ||    2 | C    |    2 | D    ||    2 | D    |    2 | D    |+------+------+------+------+36 rows in set (0.00 sec)

 

 

 从上面的查询结果中可以看出,共有36条记录(刚好是两张表的笛卡尔积,关于笛卡尔积,请点击MySQL学习足迹记录13--联结表),

 可一推测,所谓的自联结就是把同一张表,看成独立的,不同的两张表r1,r2

 

我们的目的是查询共用同一车站的所有公交线,所以从上表的结果集中再添加筛选条件(令车站相等):

r1.stop = r2.stopmysql> SELECT * FROM route AS r1,route AS r2        -> WHERE r1.stop = r2.stop;    +------+------+------+------+| num  | stop | num  | stop |+------+------+------+------+|    1 | A    |    1 | A    ||    1 | B    |    1 | B    ||    2 | B    |    1 | B    ||    1 | C    |    1 | C    ||    2 | C    |    1 | C    ||    1 | B    |    2 | B    ||    2 | B    |    2 | B    ||    1 | C    |    2 | C    ||    2 | C    |    2 | C    ||    2 | D    |    2 | D    |+------+------+------+------+10 rows in set (0.00 sec)

 

 

这已经很接近所需的结果了,但我们只需num,stop两列,再添加

SELECT r2.num,r2.stop (SELECT r1.num,r1.stop也OK) mysql> SELECT r2.num,r2.stop           -> FROM route AS r1,route r2         -> WHERE r1.stop = r2.stop;+------+------+| num  | stop |+------+------+|    1 | A    ||    1 | B    ||    1 | B    ||    1 | C    ||    1 | C    ||    2 | B    ||    2 | B    ||    2 | C    ||    2 | C    ||    2 | D    |+------+------+10 rows in set (0.00 sec)

 

 

最后去除相同的记录,再按车站排序

mysql> SELECT DISTINCT r2.num,r2.stop          -> FROM route AS r1,route AS r2          -> WHERE r1.stop = r2.stop          -> ORDER BY r2.stop;+------+------+| num  | stop |+------+------+|    1 | A    ||    1 | B    ||    2 | B    ||    1 | C    ||    2 | C    ||    2 | D    |+------+------+6 rows in set (0.00 sec)

 

 

从结果集中可以看出1路车和2路 车共用B,C车站

bitsCN.com
声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
如何让自动驾驶汽车“认得路”如何让自动驾驶汽车“认得路”Apr 09, 2023 pm 01:41 PM

与人类行走一样,自动驾驶汽车想要完成出行过程也需要有独立思考,可以对交通环境进行判断、决策的能力。随着高级辅助驾驶系统技术的提升,驾驶员驾驶汽车的安全性不断提高,驾驶员参与驾驶决策的程度也逐渐降低,自动驾驶离我们越来越近。自动驾驶汽车又称为无人驾驶车,其本质就是高智能机器人,可以仅需要驾驶员辅助或完全不需要驾驶员操作即可完成出行行为的高智能机器人。自动驾驶主要通过感知层、决策层及执行层来实现,作为自动化载具,自动驾驶汽车可以通过加装的雷达(毫米波雷达、激光雷达)、车载摄像头、全球导航卫星系统(G

一文读懂智能汽车滑板底盘一文读懂智能汽车滑板底盘May 24, 2023 pm 12:01 PM

01什么是滑板底盘所谓滑板式底盘,即将电池、电动传动系统、悬架、刹车等部件提前整合在底盘上,实现车身和底盘的分离,设计解耦。基于这类平台,车企可以大幅降低前期研发和测试成本,同时快速响应市场需求打造不同的车型。尤其是无人驾驶时代,车内的布局不再是以驾驶为中心,而是会注重空间属性,有了滑板式底盘,可以为上部车舱的开发提供更多的可能。如上图,当然我们看滑板底盘,不要上来就被「噢,就是非承载车身啊」的第一印象框住。当年没有电动车,所以没有几百公斤的电池包,没有能取消转向柱的线传转向系统,没有线传制动系

智能网联汽车线控底盘技术深度解析智能网联汽车线控底盘技术深度解析May 02, 2023 am 11:28 AM

01线控技术认知线控技术(XbyWire),是将驾驶员的操作动作经过传感器转变成电信号来实现传递控制,替代传统机械系统或者液压系统,并由电信号直接控制执行机构以实现控制目的,基本原理如图1所示。该技术源于美国国家航空航天局(NationalAeronauticsandSpaceAdministration,NASA)1972年推出的线控飞行技术(FlybyWire)的飞机。其中,“X”就像数学方程中的未知数,代表汽车中传统上由机械或液压控制的各个部件及相关的操作。图1线控技术的基本原理

智能汽车规划控制常用控制方法详解智能汽车规划控制常用控制方法详解Apr 11, 2023 pm 11:16 PM

控制是驱使车辆前行的策略。控制的目标是使用可行的控制量,最大限度地降低与目标轨迹的偏差、最大限度地提供乘客的舒适度等。如上图所示,与控制模块输入相关联的模块有规划模块、定位模块和车辆信息等。其中定位模块提供车辆的位置信息,规划模块提供目标轨迹信息,车辆信息则包括档位、速度、加速度等。控制输出量则为转向、加速和制动量。控制模块主要分为横向控制和纵向控制,根据耦合形式的不同可以分为独立和一体化两种方法。1 控制方法1.1 解耦控制所谓解耦控制,就是将横向和纵向控制方法独立分开进行控制。1.2 耦合控

福田汽车发布全新Logo,同时公布祥菱Q系列车型的售价信息福田汽车发布全新Logo,同时公布祥菱Q系列车型的售价信息Sep 12, 2023 pm 09:09 PM

8月29日,福田汽车举办了一场华丽的品牌焕新发布会,给业界带来了一系列令人振奋的消息。新的标志、欧曼智蓝底部换电产品以及全新的祥菱Q汽车成为了发布会的关注焦点福田汽车的新标志展示了公司对未来的雄心壮志。福田汽车表示,这个全新的标志象征着品牌的更新和蓬勃发展,标志着公司进入了新的发展阶段在发布会上,福田汽车还推出了备受瞩目的欧曼智蓝底部换电产品,为用户带来了更便捷、高效的使用体验。同时,全新推出的祥菱Q汽车系列也吸引了众多目光,共有4款车型,售价从16.78万元到16.88万元不等,为消费者提供了

合创汽车发布新款MPV车型V09内饰设计,定于10月13日上市合创汽车发布新款MPV车型V09内饰设计,定于10月13日上市Sep 19, 2023 pm 01:17 PM

9月9日消息,广汽旗下合创汽车日前发布了合创V09的内饰设计,并宣布该车将于9月10日开始接受预订订单,计划于10月13日正式上市。这款车型旨在进军新能源MPV市场,早在去年12月的广州车展上就已经首次亮相,被定位为中大型MPV,备受瞩目。根据官方发布的内饰预告,合创V09采用了2+2+3式的七座布局,提供黑橙、浅玉、曜黑三种内饰配色,兼具豪华感与运动感。其座舱设计以环抱式风格为主,中控台则采用了三块屏幕组合,其中中控屏悬浮式,液晶仪表和副驾屏幕则巧妙嵌入,整体呈现出简洁、平直的设计风格。细节方

智能汽车功能安全软件架构智能汽车功能安全软件架构Apr 27, 2023 pm 06:55 PM

01E-GAS安全架构思想汽车功能安全旨在把电子电气系统失效而导致的人身危害风险控制在合理范围内。下图是常见的电子电气系统硬件构成图,一个电子电气系统的构成要素,除了图中可见的硬件外,也包含图中不可见的软件。图1常用电子电气硬件系统电子电气系统的失效,既包含由于软硬件设计错误引起的系统性失效,也包含由随机硬件故障引起的失效。根据系统架构,需要设计各种安全机制去预防和探测功能故障,并能够在故障发生时,避免或者降低危害的发生。这就需要一个强壮的功能安全软件架构来管理和控制这些安全机制,降低功能安全整

智能汽车预期功能安全保障关键技术智能汽车预期功能安全保障关键技术Apr 12, 2023 pm 02:37 PM

由于性能局限、规范不足或可合理预见误用导致的预期功能安全问题层出不穷,严重阻碍了智能汽车的快速发展。本综述聚焦智能汽车预期功能安全保障关键技术,分别从系统开发、功能改进和运行3个阶段进行了系统的总结,最后从基础理论、风险防护和更新机制3方面进行了展望。本文可为智能汽车预期功能安全研究提供重要参考依据。前言根据美国国家交通安全管理局(NHTSA)数据统计,约94%的交通事故由人为因素导致,智能汽车以机器代替人类驾驶员,在提高行车安全性方面具有重要意义。但现有技术尚不能充分发挥其安全潜力,此外在引入

See all articles

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
2 周前By尊渡假赌尊渡假赌尊渡假赌
仓库:如何复兴队友
4 周前By尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒险:如何获得巨型种子
4 周前By尊渡假赌尊渡假赌尊渡假赌

热工具

DVWA

DVWA

Damn Vulnerable Web App (DVWA) 是一个PHP/MySQL的Web应用程序,非常容易受到攻击。它的主要目标是成为安全专业人员在合法环境中测试自己的技能和工具的辅助工具,帮助Web开发人员更好地理解保护Web应用程序的过程,并帮助教师/学生在课堂环境中教授/学习Web应用程序安全。DVWA的目标是通过简单直接的界面练习一些最常见的Web漏洞,难度各不相同。请注意,该软件中

PhpStorm Mac 版本

PhpStorm Mac 版本

最新(2018.2.1 )专业的PHP集成开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

MinGW - 适用于 Windows 的极简 GNU

MinGW - 适用于 Windows 的极简 GNU

这个项目正在迁移到osdn.net/projects/mingw的过程中,你可以继续在那里关注我们。MinGW:GNU编译器集合(GCC)的本地Windows移植版本,可自由分发的导入库和用于构建本地Windows应用程序的头文件;包括对MSVC运行时的扩展,以支持C99功能。MinGW的所有软件都可以在64位Windows平台上运行。

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

功能强大的PHP集成开发环境