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

SQL多个外部联接(将t-sql联接转换为ANSI格式)

胡星汉
2023-03-14
问题内容

我有3个表t1,t2,t3。我想要基于以下条件的结果集:t1在t2上具有外部联接(t1的所有行),t1在t3上具有外部联接(t1的所有行),而t2在t3上具有外部联接(t2的所有行)。如何在单个查询中使用这些外部3个联接?基本上我想将t-
sql格式的查询转换为ANSI格式。原始查询是这样的

Select * from t1, t2, t3
where t1.col1 *= t2.col1
  and t1.col2 *= t3.col1
  and t2.col2 *= t3.col2

我设法使用前2个联接作为

   Select * 
     from t1
left join t2 on t1.col1 = t2.col1
left join t3 on t1.col2 = t3.col1

这对于前两个条件正常工作。但是无法合并第3个联接。任何人都可以提出一种建议来做到这一点吗?提前致谢。


问题答案:

从您的问题中,我想您只希望将t3中的行与t2中与t1相连的行合并在一起:

SELECT 
    * 
FROM
    t1
    LEFT JOIN t2 ON t1.col1 = t2.col1
    LEFT JOIN t3 ON t1.col2 = t3.col1 AND t2.col2 = t3.col2

这将不包括来自t2和t3的行在col2上联接,除非来自t2的行已经与col1上的t1联接。



 类似资料:
  • 问题内容: 我有一个数据表(AmenityData),该表的一列包含postalsectors,例如E14 7 我也有一个Excel电子表格,其中包含邮政区的列表,例如E14 我需要从AmenityData表中获取所有数据,该表中的邮政地区类似于邮政部门,例如WHERE [PostalDistricts] +’%’LIKE [PostalSector]。 我目前正在使用的代码不会出现错误,而是什么

  • 问题内容: 我在SQL中有此查询,并且希望它使用Entity Framework 在LINQ中实现它,但是如何应用左外部联接的多个表? 问题答案: 这是使用LINQ实现左外部联接的方式。您应该使用GroupJoin(语法): 该查询联接了三个表。您可以以相同的方式加入其余表。

  • 问题内容: 我使用FULL OUTER JOIN联接了2个表,这花了6分钟来运行并给出输出。 我使用LEFT OUTER JOIN和RIGHT OUTER JOIN的UNION做了同样的事情。仅用了15秒 有人知道为什么会这样吗? 问题答案: 您可能在两个表中都有很多行,共有几行,并且所讨论的列上没有索引。

  • 问题内容: 我正在尝试编写一个join语句来将以下三个数据集连接在一起。(这是使用MS SQL Server的) 我认为完全可以通过外部联接来做到这一点,但是我遇到了主要的跨产品问题。 问题答案: 试试看:

  • 问题内容: 我们正在开发ETL作业,并且我们的顾问在连接表时一直使用“旧式” SQL 而不是使用内部连接子句 我的问题是,从长远来看,使用旧的“ where join”是否存在风险?这种联接被支持并保持为ANSI标准的时间有多长?我们的平台是SQL Server,我的主要原因是将来不再支持这些“ where joins”。发生这种情况时,我们必须使用“内部联接”样式的联接来修改所有ETL作业。 问

  • 任何帮助都将不胜感激!