精华内容
下载资源
问答
  • SQL语句左连接用法

    千次阅读 2008-09-17 10:10:00
    左连接语法结构如下: SELECT * FROM table1 LEFT OUTER JOIN table2 ON table1.a=table2.b 对选中的记录进行左连接: SELECT * FROM (SELECT * FROM table1 WHERE table1.a="**") temp LEFT OUTER JOIN ...

    左连接语法结构如下:

     

    SELECT * FROM table1 LEFT OUTER JOIN table2 ON table1.a=table2.b

     

    对选中的记录进行左连接:

     

    SELECT * FROM (SELECT * FROM table1 WHERE table1.a="**") temp  LEFT OUTER JOIN table2 ON temp.a=table2.b

    展开全文
  • 数据库左连接用法

    2009-07-28 10:24:00
     但是左连接一般用在根据id取name的应用上,如例根据主表A确定记录数,在左连接B表和C表  用来取得CATALOGNAME和DETAILNAME。 2.左连接可以连接相同的表,起不同的别名即可。 3.ON后面的相当于where条件...

     SELECT   A.CATALOG_ID  AS CATALOGID,  A.DETAIL_ID  AS DETAILID, 
     B.ASSETS_NM  AS CATALOGNAME ,  C.ASSETS_NM  AS DETAILNAME , 
     FROM   G_ARTICLE A
     LEFT JOIN G_ASSETS B ON   A.CATALOG_ID = B.CATALOG_ID AND B.DETAIL_ID='' 
     LEFT JOIN G_ASSETS C ON  A.CATALOG_ID = C.CATALOG_ID AND A.DETAIL_ID=C.DETAIL_ID 
     WHERE A.DEL_FLG!=1 
    ORDER BY ARTICLE_ID DESC 

     

    1.一般情况下左连接和直连接都能实现相同的功能

       但是左连接一般用在根据id取name的应用上,如例根据主表A确定记录数,在左连接B表和C表

       用来取得CATALOGNAME和DETAILNAME。

    2.左连接可以连接相同的表,起不同的别名即可。

    3.ON后面的相当于where条件,但是只能限制从表,不能限制主表。

    4.只有用where条件才能限制主表,但是要注意where语句的位置,应写在LEFT JOIN之后

    5.ORDER BY语句通常写在sql语句的最后面。

     

    用左连接得出的数据作为查询结果集中的列存在

    主表则决定查询结果集中的行数。

     

    展开全文
  • 作者:孙英鹏 撰写时间:2019年3月26日 左连接左连接1999用法 今天给大家讲的是ORACLE的左连接,为什么要讲呢?纯粹是想要给大家介绍一下两个的用法和方便。...左连接方法: SELECT E.LAST_NAME , E.COMMISS...
    作者:孙英鹏   撰写时间:2019年3月26日
    

    左连接与左连接1999用法

    今天给大家讲的是ORACLE的左连接,为什么要讲呢?纯粹是想要给大家介绍一下两个的用法和方便。

    先来看一下这道题:

    选择所有有奖金的员工的last_name , department_name , location_id , city

    左连接方法:
    SELECT E.LAST_NAME , E.COMMISSION_PCT , D.DEPARTMENT_ID, D.DEPARTMENT_NAME, L.LOCATION_ID,L.CITY
    FROM EMPLOYEES E , DEPARTMENTS D,LOCATIONS L
    WHERE E.DEPARTMENT_ID = D.DEPARTMENT_ID(+)
    AND D.LOCATION_ID = L.LOCATION_ID(+) AND COMMISSION_PCT IS NOT NULL;

    1999方法:
    SELECT E.LAST_NAME , E.COMMISSION_PCT , D.DEPARTMENT_ID, D.DEPARTMENT_NAME, L.LOCATION_ID,L.CITY
    FROM (EMPLOYEES E LEFT JOIN DEPARTMENTS D ON E.DEPARTMENT_ID = D.DEPARTMENT_ID)
    LEFT JOIN LOCATIONS L ON D.LOCATION_ID = L.LOCATION_ID
    WHERE COMMISSION_PCT IS NOT NULL;

    首先先说左连接方法,把要查的数据写下来,在前面加上别名区分一下,写上where语句填写连表中的共同ID,在后面加上括号表示连表。接着是左连接1999方法,步骤和前面一样,只是后面是加上LEFT JOIN表示左连接。

    区别:
    左连接方法和左连接1999方法最大的区别是一个是用括号,一个用LEFT JOIN,前者在写的时候会很麻烦,应为要区分是在前面加括号还是在后面加括号,总之就是麻烦,后者呢在写的 会方便很多,只要把所以的连接变成左连接就行了。(个人还是喜欢左连接方法,因为它写起来方便)

    展开全文
  • 在关系数据库管理系统中,表建立时各数据之间的关系不必确定,常把一个实体的所有信息存放在一个表中。
  • 主要介绍了mysql的左右内连接用法,以一个完整实例较为详细的分析了mysql的左右内连接使用技巧,具有一定参考借鉴价值,需要的朋友可以参考下
  • MySQL 左连接,右连接,内连接,UNION连接 , 全连接图解,用法代码理解   一、图解 (引用 ) 1.INNER JOIN(内连接)   SELECT <select_list> FROM Table_A A INNER JOIN Table_B B ON A....

           MySQL 左连接,右连接,内连接,UNION连接 , 全连接图解,用法代码理解

     

    一、图解 (引用

    1.INNER JOIN(内连接)

     

    SELECT <select_list>
    FROM Table_A A
    INNER JOIN Table_B B ON A.Key = B.Key

     

    2.LEFT JOIN(左连接)

     

    SELECT <select_list>
    FROM Table_A A
    LEFT JOIN Table_B B ON A.Key = B.Key

    3.RIGHT JOIN(右连接)

     

    SELECT <select_list>
    FROM Table_A A
    RIGHT JOIN Table_B B ON A.Key = B.Key

    4.OUTER JOIN(外连接)

     

    SELECT <select_list>
    FROM Table_A A
    FULL OUTER JOIN Table_B B ON A.Key = B.Key

    补充: MySQL不支持 full join , 使用 union , union all 进行操作。

     

    5.LEFT JOIN EXCLUDING INNER JOIN(左连接-内连接)

     

    SELECT <select_list>
    FROM Table_A A
    LEFT JOIN Table_B B ON A.Key = B.Key
    WHERE B.Key IS NULL

    6.RIGHT JOIN EXCLUDING INNER JOIN(右连接-内连接)

     

    SELECT <select_list>
    FROM Table_A A
    RIGHT JOIN Table_B B ON A.Key = B.Key
    WHERE A.Key IS NULL

    7.OUTER JOIN EXCLUDING INNER JOIN(外连接-内连接)

     

    SELECT <select_list>
    FROM Table_A A
    FULL OUTER JOIN Table_B B ON A.Key = B.Key
    WHERE A.Key IS NULL OR B.Key IS NULL

     

    8. 总结:左,右,内,外(全)连接,左--内,右--内,外--内 连接。 共7种方式。

     

    二、client表 和 image 表创建

    a. 创建 client 表

    DROP TABLE IF EXISTS `client`;
    CREATE TABLE `client` (
      `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '客户id',
      `name` varchar(255) DEFAULT NULL COMMENT '客户名称',
      PRIMARY KEY (`id`)
    ) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8;
    
    -- ----------------------------
    -- Records of client
    -- ----------------------------
    INSERT INTO `client` VALUES ('2', '小八2222');
    INSERT INTO `client` VALUES ('3', '小明3tttff');
    INSERT INTO `client` VALUES ('4', '小明4');
    INSERT INTO `client` VALUES ('5', '小米6677');

    b. 创建 image 表,中client_id 字段和 client 表中 id 关联

    DROP TABLE IF EXISTS `image`;
    CREATE TABLE `image` (
      `id` int(11) NOT NULL AUTO_INCREMENT,
      `client_id` varchar(255) DEFAULT NULL,
      `content` varchar(255) DEFAULT NULL,
      PRIMARY KEY (`id`)
    ) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8;
    
    -- ----------------------------
    -- Records of image
    -- ----------------------------
    INSERT INTO `image` VALUES ('1', '2', '222');
    INSERT INTO `image` VALUES ('2', '3', '333');
    INSERT INTO `image` VALUES ('3', '6', '666');

     

    三、代码理解

    1、 查询 client 表数据

    -- 查询 client 表数据
    SELECT a.* from client a ;

     

     

    2、查询image表数据

    -- 查询image表数据
    SELECT a.* from image a ;

     

    3、client 表 左连接查询 LEFT JOIN

    -- client 表 左连接查询 LEFT JOIN
    SELECT a.id,a.`name`,b.id,b.content 
    from client a
    LEFT JOIN image b on b.client_id= a.id ;

     

    4、client 表 右连接查询 RIGHT JOIN

    -- client 表 右连接查询 RIGHT JOIN
    SELECT a.id,a.`name`,b.id,b.client_id ,b.content 
    from client a
    RIGHT JOIN image b on b.client_id= a.id ;

    5、client 表 内连接查询 INNER JOIN

    -- client 表 内连接查询 INNER JOIN
    SELECT a.id,a.`name`,b.id,b.client_id,b.content 
    from client a
    -- INNER JOIN image b on b.client_id= a.id ;
    JOIN image b on b.client_id= a.id ; -- 内链接 INNER 关键字可以省略

     

    5.2、client 表 内连接查询 INNER JOIN , 省略 INNER JOIN 关键字

    SELECT a.id,a.`name`,b.id,b.client_id,b.content 
    from client a , image b where a.id = b.client_id ; -- 内链接 INNER JOIN 关键字都可以省略

     

    6.1 、client,image 表全连接查询

    -- client,image 表全连接查询 
    -- error: MySQL 不支持全连接full join 查询 
    SELECT a.id,a.`name`,b.id,b.content 
    from client a
    FULL OUTER JOIN  image b on b.client_id = a.id ;

     

     

    四、MySQL使用 UNION , UNION ALL 表示全连接

    1、client,image 使用 union 连接

    -- client,image 使用 union 连接
    SELECT  a.id,a.`name`,b.id,b.content 
    from client a
    LEFT JOIN image b on b.client_id = a.id
    UNION
    SELECT  a.id,a.`name`,b.id,b.content 
    from client a
    RIGHT JOIN image b on b.client_id = a.id;

     

    2、client,image 使用 union all 连接

    -- client,image 使用 union all 连接 
    SELECT  a.id,a.`name`,b.id,b.content 
    from client a
    LEFT JOIN image b on b.client_id = a.id
    UNION all
    SELECT  a.id,a.`name`,b.id,b.content 
    from client a
    RIGHT JOIN image b on b.client_id = a.id;

     

    3、总结: UNION 连接查询获取的去除重复后的数据集, UNION ALL 连接获取的是全部数据集,没有去除重复操作。

     

    五、UNION 和 UNION ALL 的区别

    1、MySQL中用 UNION 把多个 SELECT 语句结果组合到一个结果集中。

    2、语法格式

    select * from tableA 
    UNION [ALL]
    select * from tableB 
    UNION [ALL]
    ... 

    3、区别:从 【四】中代码演示结果可知 UNION 和 UNION ALL 区别:

    • 使用 UNION 时,会去掉重复记录。
    • 使用 UNION ALL 时,会返回多个结果集获取到的全部记录,没有去重复。
    • UNION 由于会有去重复记录的操作,故效率低于 UNION ALL 。

     

    参考资料:https://mp.weixin.qq.com/s/peuNnWtuUFPftBRuODYQ3Q

                      http://www.codeproject.com/Articles/33052/Visual-Representation-of-SQL-Joins

     

     

    展开全文
  • Oracle 外连接(OUTERJOIN) 左外连接(左边的表不加限制) 右外连接(右边的表不加限制) ...在左连接和右连接时都会以一张A表为基础表,该表的内容会全部显示,然后加上A表和B表匹配的内容。 如果A表的...
  • Oracle PL-SQL中 左连接和右连接用法 Java代码 在Oracle PL-SQL中,左连接和右连接以如下方式来实现 查看如下语句: SELECT emp_name, dept_name FORM Employee, Departmen
  • 连接可以在SELECT 语句的FROM子句或WHERE...所以,在 Transact-SQL中推荐使用这种方法。    SQL-92标准所定义的FROM子句的连接语法格式为:    FROM join_table join_type join_table  [ON (join_con
  • 通过分析左连接(+)加号的写法和一些常用语法之间的联系,了解到Oracle 加号(+)的用法。本文重点给大家介绍Oracle 左连接(+)加号用法及常用语法之间的关系 ,感兴趣的朋友跟随小编一起看看吧
  • Oracle左连接、右连接、全外连接以及(+)号用法 1、准备工作 Oracle 外连接(OUTER JOIN)包括以下: · 左外连接(左边的表不加限制) · 右外连接(右边的表不加限制) · 全外连接(左右两表都不加限制) 对应SQL...
  • 本文来自:... 阅读目录 1、准备工作2、连接(LEFT OUTER JOIN/ LEFT JOIN)3、右外连接(RIGHT OUTER JOIN/RIGHT JOIN)4、全外连接(FULL OUTER JOIN/FULL JOIN) 回到目录 1、准备工作
  • 外键 左连接 和自连接的用法

    千次阅读 2017-03-17 14:33:50
    小结 :左连接查询出主表的全部数据 ,多个left join时一步步去生成中间过滤表,最后要加where条件语句进行过滤筛选,得出所需结果。 右外连接 :右表列出全部,左表只列出匹配的记录。 自连接 : 参与...
  • 简单介绍 Oracle 外连接(OUTER JOIN)包括以下:左外连接(左边的表不加限制) 右外连接(右边的表不加限制) ...在左连接和右连接时都会以一张A表为基础表,该表的内容会全部显示,然后加上A表和B表匹配的内容。
  • 记一次sql语句左连接时的ON AND用法 stu表 stu_tea表 sql语句:查询出左连接后的所有数据 SELECT s.*, st.* FROM stu s LEFT JOIN stu_tea st ON s.id = st.sid ; 查询结果 sql语句:on and查询语句 SELECT ...
  • 1、等值连接:从表中取出每一条记录,去右表中与所有的记录进行匹配:匹配必须是某个条件在表中与右表中相同最终才会保留结果,否则不保留。 2、内连接 以上可以看出,内连接有两种写法,一种是inner ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 509,939
精华内容 203,975
关键字:

左连接用法