mysql自连接

原创 2011年01月12日 16:51:00

SELECT语句中的自连接。
  到目前为止,我们连接的都是两张不同的表,那么能不能对一张表进行自我连接呢?答案是肯定的。
有没有必要对一张表进行自我连接呢?答案也是肯定的。

表的别名:
一张表可以自我连接。进行自连接时我们需要一个机制来区分一个表的两个实例。
在FROM clause(子句)中我们可以给这个表取不同的别名, 然后在语句的其它需要使用到该别名的地方
用dot(点)来连接该别名和字段名。

我们在这里同样给出两个表来对自连接进行解释。
爱丁堡公交线路,

车站表:
stops(id, name)

公交线路表:
route(num, company, pos, stop)

一、对公交线路表route进行自连接。

SELECT * FROM route R1, route R2
WHERE R1.num=R2.num AND R1.company=R2.company

我们route表用字段(num, company)来进行自连接. 结果是什么意思呢?
你可以知道每条公交线路的任意两个可联通的车站。

二、用stop字段来对route(公交线路表)进行自连接。

SELECT * FROM route R1, route R2
WHERE R1.stop=R2.stop;

查询的结果就是共用同一车站的所有公交线。这个结果对换乘是不是很有意义呢。

从这两个例子我们可以看出,自连接的语法结构很简单,但语意结果往往不是
那么容易理解。就我们这里所列出的两个表,如果运用得当,能解决很多实际问题,
例如,任意两个站点之间如何换乘。

SELECT R1.company, R1.num
FROM route R1, route R2, stops S1, stops S2
WHERE R1.num=R2.num AND R1.company=R2.company
AND R1.stop=S1.id AND R2.stop=S2.id
AND S1.name='Craiglockhart'
AND S2.name='Tollcross'

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

Mysql自连接查询

自连接查询 假想以下场景:某一电商网站想要对站内产品做层级分类,一个类别下面有若干子类,子类下面也会有别的子类。例如数码产品这个类别下面有笔记本,台式机,智能手机等;笔记本,台式机,智能手机又可以按...

mysql自连接与join关联

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

MySQL的自然联结+外部联结(左外连接,右外连接)+内部联结

【0】README 0.1)本文旨在review 数据库的自然联结,外部联结(左外连接,右外连接),内部联结的知识; 【1】自然联结 1)自然联结定义:无论何时对表进行联结,应该至少有一个列出现不...

mysql 自连接

现有一Employee 表,详情如下 mysql> select * from Employee; +----+-------+--------+-----...

数据库内外连接、自连接

内连接: 所有满足条件的记录才会出现在结果中。 select emp.name,dept.addr from emp,dept where emp.deptid=dept.id -> sele...
  • imzoer
  • imzoer
  • 2012年12月06日 19:23
  • 7255

Mysql之自然连接

两张表: 自然连接 通过MySql自己的判断完成连接过程,不需要指定连接条件。MySql会使用表内的,相同的字段,作为连接条件。 自然连接分为内外之分。 内:natural join ...

MySQL高级查询——连接查询实例详解

前言 我们使用SQL查询不能只使用很简单、最基础的SELECT语句查询。如果想从多个表查询比较复杂的信息,就会使用高级查询实现。常见的高级查询包括多表连接查询、内连接查询、外连接查询与组合查询等,今天...

mysql 表中的自然连接,外连接,左外连接,右外连接

在mysql 中进行连接操作。 建立多个对应的表: //进行连接查询时如果某个属性值在两个表中都出现的话,怎应该在前面加具体表名。 、、进行自然连接  select student.sno,snam...
  • QH_JAVA
  • QH_JAVA
  • 2013年10月27日 21:29
  • 4447

一个简单的连接mysql数据库的语句

import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java...

MySQL中,关联查询的3种写法(USING/ON)

看看下面三个关联查询的 SQL 语句有何区别? SELECT * FROM score, student WHERE score.id = student.id ... SELECT * FROM ...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:mysql自连接
举报原因:
原因补充:

(最多只允许输入30个字)