zoukankan      html  css  js  c++  java
  • 深入了解join用法

    最近面试经常被问到inner join, right join , left join  今晚决定搞清楚这些:

    首先先创建两个表:

    CREATE TABLE Persons
    (
    Id_P int NOT NULL PRIMARY KEY,
    LastName varchar(255) NOT NULL,
    FirstName varchar(255),
    Address varchar(255),
    City varchar(255)
    )
    
    CREATE TABLE Orders
    (
    Id_O int NOT NULL PRIMARY KEY,
    OrderNo int NOT NULL,
    Id_P int NOT NULL 
    )

    下面我在里面写入内容,如下图所示:

    1,Persons表

    2,Orders表

    现在步入正题:

    1. join(inner join)

      只有两个表格都满足条件,才会列出。INNER JOIN 关键字在表中存在至少一个匹配时返回行。如果 "Persons" 中的行在 "Orders" 中没有匹配,就不会列出这些行。

    select Persons.LastName,Persons.FirstName,Orders.OrderNo from Persons inner join Orders on Persons.Id_P=Orders.Id_P
    order by Persons.LastName

    结果:

    2,left join

        LEFT JOIN 关键字会从左表 (table_name1) 那里返回所有的行,即使在右表 (table_name2) 中没有匹配的行。

     

    select Persons.LastName,Persons.FirstName,Orders.OrderNo from Persons left join Orders on Persons.Id_P=Orders.Id_P
    order by Persons.LastName

    3,right join

       RIGHT JOIN 关键字会右表 (table_name2) 那里返回所有的行,即使在左表 (table_name1) 中没有匹配的行。

    select Persons.LastName,Persons.FirstName,Orders.OrderNo from Persons right join Orders on Persons.Id_P=Orders.Id_P
    order by Persons.LastName

    4,full join

    只要其中某个表存在匹配,FULL JOIN 关键字就会返回行。

    select Persons.LastName,Persons.FirstName,Orders.OrderNo from Persons full join Orders on Persons.Id_P=Orders.Id_P
    order by Persons.LastName

    结果:

    以上仅供自己学习!

  • 相关阅读:
    SQL Server系统表sysobjects介绍
    tofixed方法 四舍五入
    (function($){})(jQuery);
    DOS批处理命令-字符串操作
    IF ERRORLEVEL 和 IF %ERRORLEVEL% 区别
    Gpupdate命令详解
    DOS批处理中%cd%和%~dp0的区别
    SetACL 使用方法详细参数中文解析
    Lazarus 1.6 增加了新的窗体编辑器——Sparta_DockedFormEditor.ipk
    Lazarus 1.44升级到1.6 UTF8处理发生变化了
  • 原文地址:https://www.cnblogs.com/wuyuankun/p/3730969.html
Copyright © 2011-2022 走看看