SQL 多重外连接(将 t-sql 连接转换为 ANSI 格式)

2024-01-04

我有 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

这适用于前 2 个条件。但无法合并第三次连接。任何人都可以建议一种方法来实现这一点吗? 提前致谢。


您可以有多种变体,所有变体都具有不同的结果集。其中哪一个的初衷对于其他人来说是很难甚至不可能辨别的:


(变化1- Tobsey的查询,先连接到t2,然后连接到t3,相当于):

SELECT 
    * 
FROM
        t1
    INNER JOIN                                --- or LEFT JOIN
        t2 
            ON  t1.col1 = t2.col1
    LEFT JOIN 
        t3 
            ON  t1.col2 = t3.col1 
            AND t2.col2 = t3.col2     --- this line makes the first LEFT join
                                      --- equal to INNER join

(变化2- 首先加入 t3,然后加入 t2 ):

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

(变体3a- 首先将 t2 连接到 t3,然后将 t1 连接到该连接):

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

如果替换第一个或第二个,则变体 3 可以有多个子变体LEFT加入一个INNER join.

我猜你想要变体 3a。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

SQL 多重外连接(将 t-sql 连接转换为 ANSI 格式) 的相关文章

  • 会员提供商使用还是不使用?

    我正在开发一个使用 Facebook 的网站 现在为了管理用户我想使用MembershipProvider并选择开发一个定制的会员提供商 我的问题是我的数据库架构与标准成员资格架构不匹配 并且提供的用于覆盖的函数采用与我预期不同的参数 例如
  • 如何在 PostgreSQL 中生成月份列表?

    我有一张桌子A with startdate列是TIMESTAMP WITHOUT TIME ZONE我需要编写一个查询 函数来生成月份列表MIN列的值直到MAX列的值 例如 startdate 2014 12 08 2015 06 16
  • 在 Android 版 ORMLite 中加入类会引发 SQL 异常:找不到外部类,反之亦然

    我正在尝试使用 QueryBuilder 为两个不同的类创建一个联接查询 一个Product类和一个Coupon类 引用 Product 属性 storeId public class Coupon DatabaseField column
  • 当我将 xx 添加到 mysql float 列时,结果错误,这是一个错误吗?

    我的mysql 5 6 16 我的餐桌信息 CREATE TABLE xxx uid int 11 NOT NULL money float 10 2 NOT NULL DEFAULT 0 00 real money float 10 2
  • 向 sql select 查询添加新的空列

    我有以下 sql 选择查询 select column1 column2 from mytable 是一种向表中不存在的查询添加空列的方法 例如 select column1 column2 empty int column from my
  • 连接查询或子查询

    开发人员何时使用联接而不是子查询是否有经验规则 或者它们是否相同 第一个原则是 准确地陈述查询 第二个原则是 简单明了地陈述查询 这是你通常做出选择的地方 第三个是 陈述查询 以便它能够有效地处理 如果它是一个具有良好查询处理器的数据库管理
  • Informix:带有输出参数的程序?

    我搜索了很多 但找不到任何东西 我只是想问是否有任何方法可以创建和调用过程 Informix 没有参数 我知道如何返回一个或多个值 对于过程和函数 但这不是我想要的 如果 Informix 不允许输出参数 那就真的很奇怪了 提前致谢 EDI
  • 编写 PHP SQL 更新语句的最佳方法

    我有这个 PHP SQL 语句 updateCategory UPDATE category SET name name description description parent parent active active WHERE i
  • 使用每个单独行的多个“where”子句更新多行

    我正在尝试像这样更新我的表 Update MyTable SET value 1 WHERE game id 1 x 4 y 8 SET value 2 WHERE game id 1 x 3 y 7 SET value 3 WHERE g
  • 帮助将二进制图像数据从 SQL Server 读取到 PHP 中

    我似乎无法找到将二进制数据从 SQL 服务器读取到 PHP 的方法 我正在开发一个项目 需要能够将图像直接存储在 SQL 表中 而不是文件系统上 目前 我一直在使用这样的查询 插入 myTable 文档 选择 从 OPENROWSET BU
  • 如何防止用户生成的 Sql 查询上的 Sql 注入

    我有一个项目 私有的 ASP net 网站 受 https 密码保护 其中要求之一是用户能够输入直接查询数据库的 Sql 查询 我需要能够允许这些查询 同时防止它们对数据库本身造成损坏 以及访问或更新它们不应该访问 更新的数据 我制定了以下
  • 一次更改多个表

    我正在尝试一次更改多个 SQL Server 2008 R2 表 这是我的代码 use DatabaseName go Declare SchemaUsed varchar 20 dbo create table Tables TableN
  • 如何获取共同好友列表

    你好 我想知道如何才能找到共同的朋友 我目前在思考这个问题时遇到问题 我有一个名为 users 的表 它是这样的 id name 1 Kenny 2 Jack 3 Jimmy 4 Chris 5 Meg 6 Jake 7 Micheal 8
  • MySQL 中有“connect by”替代方案吗?

    如果我使用 Oracle 有connect by可用于创建分层查询的关键字 目前我正在一个项目中使用MySQL 我想知道是否有替代方案connect by在 MySQL 中 我尝试过谷歌 但到目前为止还没有结果 我想要实现的是通过一个查询从
  • 转置和聚合 Oracle 列数据

    我有以下数据 Base End RMSA Item 1 RMSA Item 2 RMSA Item 3 RMSB Item 1 RMSB Item 2 RMSC Item 4 我想将其转换为以下格式 Key Products RMSA RM
  • 我想从 Crystal Report .rpt 文件中提取 SQL 查询,有办法做到这一点吗?

    我想从 Crystal Report rpt 文件中提取 SQL 查询 有办法做到这一点吗 我没有任何 Crystal Reports 产品 只有 rpt 文件 下面是一个 Net 代码示例 它从给定目录中的所有 Crystal Repor
  • max()、分组依据和排序依据

    我有以下 SQL 语句 SELECT t client id max t points AS max FROM sessions GROUP BY t client id 它只是列出了客户 ID 以及他们所获得的最大积分 现在我想按 max
  • 如何使用 Alter Table 在 Access 中创建小数字段?

    我想以编程方式在 MS Access 表中创建一个新列 我尝试过很多排列ALTER TABLE MyTable Add MyField DECIMAL 9 4 NULL 并得到 字段定义中的语法错误 我可以轻松创建一个数字字段Double类
  • mysql 中 INSERT 语句的计算列

    假设我想要一个表来记录其他表中的日期和列数 或者任何类型的数学 字符串连接等 CREATE TABLE log id INTEGER NOT NULL AUTO INCREMENT date DATETIME NOT NULL count
  • JbdcTemplate - 带有动态 SQL 查询的PreparedStatements

    I know jdbcTemplate可以用来创建PreparedStatements如果你这样设置 i e private JdbcTemplate jdbcTemplate String sqlQuery Select from tab

随机推荐

  • Python 中的 2D 网格数据可视化

    我需要可视化一些数据 它是基本的二维网格 其中每个单元格都有浮点值 我知道如何在 OpenCV 中为值分配颜色并绘制网格 但这里的要点是 值太多了 所以几乎不可能做到这一点 我正在寻找一些可以使用渐变的方法 例如 值 5 0 将表示为蓝色
  • React-bootstrap-table 标题列未对齐

    我有以下内容 Node jsx import React from react import Col Row Tab Tabs from react bootstrap import Alerts from Alerts import De
  • 如何在反应中将State设置为新数据?

    我刚刚开始研究 ReactJS 并尝试从 API 检索数据 constructor super this state data false this nextProps axios get https jsonplaceholder typ
  • GUID 与 INT IDENTITY [重复]

    这个问题在这里已经有答案了 可能的重复 您觉得您的主键怎么样 https stackoverflow com questions 404040 how do you like your primary keys 我知道使用 GUID 的好处
  • 在 CSS3 变量定义中使用 SCSS 变量不起作用?

    我正在研究如何将样式应用于客户端项目中的可重用 Angular 组件 看主题 样式 Angular 2 可重用组件库 https stackoverflow com questions 44571437 theme style angula
  • 用于查找两个列表之间差异的库函数 - OCaml

    有没有库函数可以找List1 minus elements that appear in List2 我一直在谷歌上搜索并没有发现太多 似乎没有too自己写的很简单 我编写了一个函数来从列表中删除特定元素 但这要简单得多 let rec d
  • SQL 空间连接

    我有两张表 一张以点作为地理 另一张以多边形作为地理 我可以通过以下查询找到单个点落在哪个多边形 从点表中 DECLARE p geography select p PointGeom from dbo PointTable where I
  • Google Cloud SDK 与 Google Cloud 客户端库

    它们有何不同 每个的用例是什么 我是否可以专门使用一个 例如 如果我更熟悉 NET 我可以使用客户端库 适用于 NET 完成使用 python 和 SDK 可以完成的所有操作 谷歌云SDKhttps cloud google com sdk
  • Haskell 中的简单字数统计

    这是我的第一个 haskell 程序 wordCount 接受单词列表并返回一个元组 其中每个不区分大小写的单词与其使用计数配对 对于改进代码可读性或性能有什么建议吗 import List import Char uniqueCountI
  • ffmpeg 无法识别 Quicktime DV 编解码器

    我在 Mac OSX10 5 上获得了很好的建议 将修改后的 MXF 媒体结构转换为 h264 同时保留多轨音频 但我无法让 ffmpeg 在 Windows 环境中工作 See 这一页 https stackoverflow com qu
  • 如何在谷歌地图多边形内绘制直线

    我使用创建了谷歌地图google map javascript API V3 我正在绘制邮政编码多边形的数量 根据某些条件 多边形具有不同的颜色 现在我想根据某些标准在某些多边形内绘制直线 散列标记 我们怎样才能做到呢 下面是我为绘制多边形
  • PyDev 无法在 Eclipse 中工作

    我最近不得不重置我的 PC 重新启动 Eclipse 后出现此错误 id org python pydev editor PythonEditor 没有编辑器描述符 我尝试寻找解决方案 但其他人喜欢here https stackoverf
  • 创建新的 Google 日历

    我想使用 Android 应用程序在现有帐户上创建新的 Google 日历 例如this http sourceforge net projects lngooglecalsync Windows 应用程序确实如此 该应用程序使用 Gdat
  • 如何更改 :focus 上文本区域的边框颜色

    我想改变焦点上 TEXTAREA 的边框颜色 但我的代码似乎无法正常工作 代码已开启fiddle http fiddle jshell net ffS4S
  • PHP cURL、POST JSON

    我需要发布以下 JSON 代码 但由于某种原因它不起作用 下面是我的代码 fieldString 395609399 the curl request processor function processCurlJsonrequest UR
  • 在并行任务期间跟踪失效的 WebDriver 实例

    我看到一些使用 Selenium WebDriver 运行并行嵌套循环 Web 压力测试的死实例怪异现象 简单的例子是 比如说 点击 300 个独特的页面 每个页面有 100 次展示 我 成功 获得 4 8 个 WebDriver 实例Th
  • 如何在 YouTube 缩略图上叠加播放按钮

    在我正在进行的一个项目中 我们将媒体团队发布的大量 YouTube 视频提取到数据库中 以便我们可以将它们呈现为相关内容 我们希望能够在生成的 YouTube 缩略图上叠加一个播放按钮 以便更明显地表明缩略图代表的是可以播放的视频 我正在寻
  • 有没有办法在Linux平台上编译微软风格的内联汇编代码?

    正如标题中提到的 我想知道有没有办法在 Linux 操作系统 例如 ubuntu 中编译微软风格的内联汇编代码 如下所示 asm mov edi A EMMS 示例代码是内联汇编代码的一部分 可以在win10上使用cl exe编译器成功编译
  • 如何在 Android 中将提示文本置于 EditText 中?

    我需要将提示文本居中EditText在安卓中 我该怎么做呢 为了使提示文本居中以与 EditText 一起使用 您必须确保定义 android ellipsize start 我不知道为什么这会起作用 但确实如此 从个人代码中提取的示例
  • SQL 多重外连接(将 t-sql 连接转换为 ANSI 格式)

    我有 3 个表 t1 t2 t3 我想要一个基于以下条件的结果集 t1 在 t2 t1 的所有行 上有外连接 t1 在 t3 t1 的所有行 上有外连接 t2 在 t3 t2 的所有行 上有外连接 如何在单个查询中使用这些外部 3 个联接