多个左连接查询

建表

create table AAAAA0

(

GKNAME VARCHAR2(50),

NUM    VARCHAR2(10)

)

create table AAAAA1

(

CNAME VARCHAR2(50),

NUM0  VARCHAR2(10),

NUM1  VARCHAR2(10),

NUM2  VARCHAR2(10)

)

问题描述

ORACLE SQL 多列外连接怎么匹配查询?

列出每条船的当前港口名,下一站港口名,终点港口名。

解决

select b0.cname,a0.gkname 当前港口,a1.gkname 下一站港口,a2.gkname 终点 from AAAAA1 b0,AAAAA0 a0,AAAAA0 a1,AAAAA0 a2

where b0.num0=a0.num(+)

and b0.num1=a1.num(+)

and b0.num2=a2.num(+);

注意

1、  左连接或是右连接分主表和附属表,上面例子中主表是AAAAA1

2、  对于主表来说,只要主表的行任意字段有值,即便连接字段为null,也出现在结果集中。出现在结果集中的附表字段也必然为null。

3、  一个外链接对应一张表,如上例,有三个外链接,AAAAA0表就要起三个别名。

时间: 2024-07-28 13:09:51

多个左连接查询的相关文章

左连接查询

左连接查询语句 表1 left join 表2 on 条件: 然后where,having,group等语句可以照常使用 以下例子用两次左连接进行匹配 select t1.tname,mres,t2.tname,matime from m left join t as t1 on t1.tid=m.hid left join t as t2 on t2.tid=m.gid; mysql> set names gbk; Query OK, 0 rows affected (0.02 sec) my

EF的左连接查询

在EF中,当在dbset使用join关联多表查询时,连接查询的表如果没有建立相应的外键关系时,EF生成的SQL语句是inner join(内联),对于inner join,有所了解的同学都知道,很多时候这并不是我们的本意,实例如下: var list = from o in context.CTMS_OD_ORDERS join d in context.CTMS_SUP_DOCTOR on o.OWNERDOCID equals d.USERID join e in context.CTMS_

mysql left join 左连接查询关联n多张表

eft join 左连接即以左表为基准,显示坐标所有的行,右表与左表关联的数据会显示,不关联的则不显示.关键字为left join on. **基本用法如下: select table a left join table b on a.id = b.ta_id** 注意:1??其中on后面关联的字段应该是同一字段(两表关联的外键) 2??由于以左表为基准,左表一条记录如果对应右表多条记录,那查出的数据中右表的数据也只显示一条,如果要都显示,可以用group_contact()将字段用逗号隔开显示

thinkphp左连接查询,原生查询

原生查询: $Model = new Model();$sql = 'select a.id,a.title,b.content from think_test1 as a, think_test2 as b where a.id=b.id '.$map.' order by a.id '.$sort.' limit '.$p->firstRow.','.$p->listRows;$voList = $Model->query($sql); 2.左查询 $model=M('picture

有时候子查询比左连接查询速度快

最近几天在优化数据库,有些数据表因为建立时候不合理导致查询的时候速度比较慢,比如三个表,三个表中数据最少的都是十万条,这些表在左联或者右联的时候速度可能需要几秒钟,再加上where条件,条件中再加or,这时候速度是非常的慢的,往往需要10秒以上,这时候可以用子查询或者union 或者union all 代替,根据情况而定 比如这个语句用子查询速度就比较快 原来的语句: select K.EmployeeNumber, K.PositionName, K.Name, K.SkillWages, k

sql左连接查询+右表带有条件的实现

select * from A表 a left join B表 b on a.id=b.a_id and b.字段='/*条件*/' ; 可查出左表所有数据 select * from A表 a left join B表 b on a.id=b.a_id where b.字段='/*条件*/' ; 只能查出部分数据 原文地址:https://www.cnblogs.com/edllixiaoyu/p/11664126.html

Linq to Sql 左连接查询

1 var query = from t0 in context.ExpressSendMaster 2 join t1 in context.Supplier on t0.SupplierCode equals t1.SupplierCode 3 join t2 in context.ExpressSendPackageRule on t0.AreaId equals t2.Id into t0_join 4 from t0_t2 in t0_join.DefaultIfEmpty() 5 w

连接查询时on与where的区别

写在前面:在编写SQL的过程中,我经常使用LEFT JOIN关联多个小查询形成一个大查询,产生一张宽表.在进行这些查询中,给我感触最深的亮点是:1.left join中主表的选择,主表的选择很重要,否则就会漏掉一些记录或者ID:2.连接查询的ON条件和外层的WHERE条件的区分使用,如果对他们的作用以及区别有一个很清晰的认识,那么用混一条语句就可能产生很大的差别.因此,本文在学习了网友的博文的基础上进行如下总结和整理. 关键点:数据库在通过连接两张或多张表来返回记录时,都会生成一张中间的临时表,

mysql_07_连接查询

#创建数据库CREATE DATABASE db_book; #使用数据库USE `db_book`; #表如果存在则删除DROP TABLE IF EXISTS `t_book`; #创建表CREATE TABLE `t_book` ( `id` int(11) NOT NULL AUTO_INCREMENT, `bookName` varchar(20) DEFAULT NULL, `price` decimal(6,2) DEFAULT NULL, `author` varchar(20)