sql的left join 实例与语法用法

sql的left join 实例与语法用法

左联接和类似的权利JOIN操作可以在任何的FROM子句用于组合两个表中的记录。左JOIN操作用于创建一个左外连接,包括从两个表中第一个(左)的所有记录,即使没有匹配在第二记录值。右JOIN操作用于创建一个右外连接,包括从第二(右的所有记录两个表),即使没有匹配的第一条记录的值。
 
虽然LEFT JOIN或RIGHT JOIN操作可以内部的内蒙古嵌套加入,反之则不然。内部联接操作无法在一个左嵌套JOIN或RIGHT JOIN。
 
使用表'员工'和'工程',左JOIN操作将返回所有雇员,不论是否他们目前从事的任何项目,但项目名称如适用的名字:

SELECT Employee.username, Project.ProjectName
FROM Employee LEFT JOIN Project
ON Employee.EmployeeID = Project.EmployeeID;
 

使用相同的表,正确的JOIN操作将返回所有项目的名称,是否不属于任何雇员对他们目前的工作,但在适用情况下与员工的名字

SELECT Employee.username, Project.ProjectName
FROM Employee RIGHT JOIN Project
ON Employee.EmployeeID = Project.EmployeeID;
 

例表a
aid adate
1 a1
2 a2
3 a3
表b
bid bdate
1 b1
2 b2
4 b4
两个表a,b相连接,要取出id相同的字段
select * from a inner join b on a.aid = b.bid这是仅取出匹配的数据.
此时的取出的是:
1 a1 b1
2 a2 b2
那么left join 指:
select * from a left join b on a.aid = b.bid
首先取出a表中所有数据,然后再加上与a,b匹配的的数据
此时的取出的是:
1 a1 b1

SQL LEFT JOIN 关键字
LEFT JOIN 关键字会从左表 (table_name1) 那里返回所有的行,即使在右表 (table_name2) 中没有匹配的行。
LEFT JOIN 关键字语法
SELECT column_name(s) FROM table_name1 LEFT JOIN table_name2 ON table_name1.column_name=table_name2.column_name
 注释: 在某些数据库教程中, LEFT JOIN 称为 LEFT OUTER JOIN。
 

 

原始的表 (用在例子中的):
"Persons" 表: Id_P LastName FirstName Address City
1 Adams John Oxford Street London
2 Bush George Fifth Avenue New York
3 Carter Thomas Changan Street Beijing
"Orders" 表: Id_O OrderNo Id_P
1 77895 3
2 44678 3
3 22456 1
4 24562 1
5 34764 65

左连接(LEFT JOIN)实例
现在,我们希望列出所有的人,以及他们的定购 - 如果有的话。 您可以使用下面的 SELECT 语句: SELECT Persons.LastName, Persons.FirstName, Orders.OrderNo FROM Persons LEFT JOIN Orders ON Persons.Id_P=Orders.Id_P ORDER BY Persons.LastName
 结果集: LastName FirstName OrderNo
Adams John 22456
Adams John 24562
Carter Thomas 77895
Carter Thomas 44678
Bush George  
LEFT JOIN 关键字会从左表 (Persons) 那里返回所有的行,即使在右表 (Orders) 中没有匹配的行。
2 a2 b2
3 a3 空字符
同样的也有right join
指的是首先取出b表中所有数据,然后再加上与a,b匹配的的数据
此时的取出的是:
1 a1 b1
2 a2 b2
4 空字符 b4

时间: 2024-09-30 12:40:57

sql的left join 实例与语法用法的相关文章

mysql Left Join, Inner Join实例教程

mysql Left Join, Inner Join实例教程 Left Join, Inner Join 的相关内容,非常实用,对于理解原理和具体应用都很有帮助! 一.先看一些最简单的例子 例子 Table A aid   adate 1      a1 2      a2 3      a3 TableB bid bdate 1    b1 2   b2 4    b4 两个表a,b相连接,要取出id相同的字段 select * from a inner join b on a.aid =

c#匿名方法的静态数据成员和实例数据成员用法

匿名方法总是以一个delegate关键字开始,后面跟着用在方法和方法体(the method body)本身中的参数.正如从上面示例中所见,用户不需要确定匿名方法的返回类型.它(译注:指返回类型)由方法体中的return语句推断而来..NET CLR不能执行像匿名方法一样的自由流(free flowing)代码块.CLR要求:它执行的每个方法是一个类型的一部分,并且应该是一个静态(static)方法或实例(instance)方法(译注:若一个方法声明中含有 static 修饰符,则称该方法为静态

sql SUM()函数 求和实例教程

sql SUM()函数 求和实例教程,好了下面来看看吧. sum是用来求一列的数据之和的,必须是数值型的哦.下面来看看语法吧. SELECT SUM(column_name) FROM table_name 我们举个例子来说明一下吧. O_Id OrderDate OrderPrice Customer 1 2008/11/12 1000 Hansen 2 2008/10/23 1600 Nilsen 3 2008/09/02 700 Hansen 4 2008/09/03 300 Hansen

sql server递归子节点、父节点sql查询表结构的实例

一.查询当前部门下的所有子部门 WITH dept AS ( SELECT * FROM dbo.deptTab --部门表 WHERE pid = @id UNION ALL SELECT d.* FROM dbo.deptTab d INNER JOIN dept ON d.pid = dept.id ) SELECT * FROM dept 二.查询当前部门所有上级部门 WITH tab AS ( SELECT DepId , ParentId , DepName , [Enable] ,

分析MS SQL Server里函数的两种用法

server|函数 SQL Server里函数的两种用法(可以代替游标) 1. 因为update里不能用存储过程,然而要根据更新表的某些字段还要进行计算.我们常常采用游标的方法,这里用函数的方法实现. 函数部分: 以下是引用片段: CREATE FUNCTION [DBO].[FUN_GETTIME] (@TASKPHASEID INT) RETURNS FLOAT AS BEGIN DECLARE @TASKID INT, @HOUR FLOAT, @PERCENT FLOAT, @RETUR

SQL Server里函数的两种用法(可以代替游标)

server|函数|游标 SQL Server里函数的两种用法(可以代替游标)1. 因为update里不能用存储过程,然而要根据更新表的某些字段还要进行计算.我们常常采用游标的方法,这里用函数的方法实现. 函数部分:CREATE FUNCTION [DBO].[FUN_GETTIME] (@TASKPHASEID INT) RETURNS FLOAT AS BEGIN   DECLARE @TASKID INT,          @HOUR FLOAT,           @PERCENT

在C#中把两个DataTable连接起来,相当于Sql的Inner Join方法

在下面的例子中实现了3个Join方法,其目的是把两个DataTable连接起来,相当于Sql的Inner Join方法,返回DataTable的所有列.如果两个DataTable中的DataColumn有重复的话,把第二个设置为ColumnName+"_Second",下面是代码,希望对大家有所帮助.using System;using System.Data; namespace WindowsApplication1{    public class SQLOps    {    

C#中把两个DataTable连接起来,相当于Sql的Inner Join方法

在下面的例子中实现了3个Join方法,其目的是把两个DataTable连接起来,相当于Sql的Inner Join方法,返回DataTable的所有列.  如果两个DataTable中的DataColumn有重复的话,把第二个设置为ColumnName+"_Second",下面是代码,希望对大家有所帮助.  using System;  using System.Data;  namespace WindowsApplication1  {      public class SQLO

MySQL SQL语句之join过滤注意事项

对于SQL语句的JOIN语句,大家并不陌生.关于其中的where语句中进行内容过滤还是在 On 语句中或者having进行过滤,这个是值得注意的. 案例:找出某段时间内注册的新用户,没有通过新手任务当中具体哪一步任务,统计 其中涉及到两张表 用户基础表:user_base,  user_id, 注册时间 created_at 任务表: user_id,task_id,task_status A 语句: select  min(b.task_id) life,task_status,  a.use