当前位置: 首页 > 面试题库 >

SQL Server中左联接和右联接之间的区别

阎德宇
2023-03-14
问题内容

我知道SQL Server中的联接。

例如。有两个表Table1,Table2。

它们的表结构如下。

create table Table1 (id int, Name varchar (10))

create table Table2 (id int, Name varchar (10))

表1的数据如下:

    Id     Name     
    -------------
    1      A        
    2      B

表2数据如下:

    Id     Name     
    -------------
    1      A        
    2      B 
    3      C

如果我执行下面提到的两个SQL语句,则两个输出将是相同的

select *
from Table1
  left join Table2 on Table1.id = Table2.id

select *
from Table2
  right join Table1 on Table1.id = Table2.id

请在上述SQL语句中说明左右联接之间的区别。


问题答案:

Select * from Table1 left join Table2 …

Select * from Table2 right join Table1 ...

确实是完全可以互换的。但是,请尝试Table2 left join Table1(或同一对Table1 right join Table2)进行区别。此查询应为您提供更多行,因为Table2包含ID在Table1中不存在的行。



 类似资料:
  • 问题内容: 我有三个表: 命令 OrderId,int PK CustomerId,与客户之间为int FK,允许为NULL 顾客 CustomerId,int PK CompanyId,将FK转换为Company,不允许为NULL 公司介绍 CompanyId,int PK 名称nvarchar(50) 我想选择所有订单,无论是否有客户,如果有客户,也要选择客户的公司名称。 如果我使用此查询…

  • 问题内容: 假设我们有下表t1和t2: 我们希望找到以下结果: 这基本上是右连接与左连接的并集。以下代码有效,但感觉很笨拙: 有没有更好的方法来实现这一目标? 问题答案:

  • 问题内容: 这个问题已经在这里有了答案 : SQL Server中的LEFT JOIN与LEFT OUTER JOIN (12个答案) 5年前关闭。 之间有什么区别? 问题答案: 在MySQL中,它们是同一回事。A 是的同义词或缩写。

  • 问题内容: 我们有下面的查询。使用LEFT OUTER联接需要9秒钟才能执行。将LEFT OUTER更改为LEFT INNER可以将执行时间减少到2秒,并且返回 相同 数量的行。由于正在处理dbo.Accepts表中相同数量的行,而不论联接类型如何,为什么外层要花3倍的时间? 问题答案: 返回相同行数的事实是事后事实,查询优化器无法预先知道Accepts中的每一行在Marker中都有匹配的行,可以

  • 问题内容: 我可能现在应该知道这一点,但是以下两个语句之间的区别是什么? 嵌套联接: 比较传统的联接: 问题答案: 好吧,这是操作的顺序。 可以改写为: 因此,基本上,首先根据连接条件:t3将t2与t3左连接,然后在table2_ID = table1_ID上与t2对IN1进行t1内连接。 在第二个示例中,首先将INNER JOIN t1与t2组合在一起,然后在条件table2_ID = tabl

  • 问题内容: 这个问题已经在这里有了答案 : INNER JOIN ON vs WHERE子句 (12个答案) 7年前关闭。 我有两个选择连接SQL语句: 显然,它们的结果相同。但是它们之间没有任何区别,例如性能,可移植性。 问题答案: 一个区别是,第一个选项通过在where子句中表达联接条件来隐藏意图。 第二个选项,写出连接条件的条件对于阅读查询的用户来说更加清楚。它显示了查询的确切意图。 至于性