在 SQL 中连接多个表

2024-03-21

有人可以向我解释一下连接吗?

内连接根据where条件选择公共数据。

左外连接从左表中选择所有数据,而不考虑公共数据,但从右表中获取公共数据,右外连接反之亦然。

我知道基础知识,但当涉及到 5、8、10 个以上的表时,问题仍然存在。

假设我有 10 个表要加入。如果我与前 5 个表进行内连接,现在尝试对第 6 个表应用左连接,那么查询将如何工作?

我的意思是说现在前5个表的结果集将被视为左表,第6个将被视为右表?或者只有第五个表被认为是左,第六个表被认为是右?请帮助我解决这个问题。


当连接多个表时,每个连接的输出在逻辑上形成一个进入下一个连接的虚拟表。

因此,在您问题的示例中,连接前 5 个表的复合结果将被视为左侧表。

See Itzik Ben-Gan 的逻辑查询处理海报 http://www.sql.co.il/books/insidetsql2008/Logical%20Query%20Processing%20Poster.pdf了解更多相关信息。

连接中涉及的虚拟表可以通过定位来控制ON条款。例如

SELECT *
FROM   T1
       INNER JOIN T2
         ON T2.C = T1.C
       INNER JOIN T3
                  LEFT JOIN T4
                    ON T4.C = T3.C
         ON T3.C = T2.C 

相当于(T1 Inner Join T2) Inner Join (T3 Left Join T4)

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

在 SQL 中连接多个表 的相关文章

  • sys.sql_modules 和 sys.objects 中的 object_name 和定义关系错误

    我运行了以下查询 SELECT sm object id v1 object name o type o type desc sm definition FROM sys sql modules sm CROSS APPLY VALUES
  • 展平具有未知列数的子/父数据

    我正在努力寻找存储和表示 SQL MySQL DB 和 C Windows 表单中的数据的最佳方法 我的数据映射到如下所示的类时 public class Parent public string UniqueID get set Key
  • 获取下一个ID而不插入行

    在 SQL SQL Server 中是否可以在插入行之前从表中的标识列检索下一个 ID 整数 而无需实际插入行 如果删除了最近的行 则这不一定是最高 ID 加 1 我问这个问题是因为我们偶尔需要用新行更新实时数据库 行的 ID 在我们的代码
  • T-SQL 按最旧日期和唯一类别选择行

    我正在使用 Microsoft SQL 我有一个表 其中包含按两个不同类别存储的信息和一个日期 例如 ID Cat1 Cat2 Date Time Data 1 1 A 11 00 456 2 1 B 11 01 789 3 1 A 11
  • SQL Server 到 er 模型

    是否有程序可以将 SQL Server 数据库图表转换为 er 模型 或者从 SQL Server 服务器创建数据库的 er 模型 在 SQL Server 中 Management Studio 中的每个数据库都有 数据库图 功能 您可以
  • Django 模型 - 外键作为主键

    我有以下2张表 在 models py 中 class Foo models Model uuid models CharField UUID primary key True default uuid4 and class FooExt
  • SQL:将一个表中的所有记录插入到另一表中,而不指定列

    我想将备份表 foo bk 中的所有记录插入到 foot 表中 而不指定特定的列 如果我尝试这个查询 INSERT INTO foo SELECT FROM foo bk 我会收到错误 插入错误 列名称或提供的值的数量与表定义不匹配 是否可
  • 如何使组合键唯一?

    I am making a database of students in one school Here is what I have so far 如果您不喜欢阅读 请跳至 简而言之 部分 问题是我对这个设计并不满意 我想要的组合gra
  • 获取列名称以及 JSON 响应

    我有三个实体类 我编写了包含两个表的联接的查询 表 费用类别 Entity Table name ExpensesCategories public class ExpensesCategories Id GeneratedValue st
  • 为什么涉及用户变量的表达式的求值顺序未定义?

    From MySQL手册 http dev mysql com doc refman 5 7 en user variables html以下查询的输出不保证始终相同 SET a 0 SELECT a AS first a a 1 AS s
  • 使用全文搜索查找精确匹配

    使用 Sql Server 2008 如何使用全文搜索来实际找到精确的字符串匹配 我对此感到非常困难 而且我在网上找不到令人满意的解决方案 例如 如果我正在搜索字符串 Bojan Skrchevski 我希望第一个结果正是如此 到目前为止
  • Azure COSMOS DB 如何查询数组中的内容

    如何进行查询以获取文档数组 roles 中包含某些内容的文档 我想获取以下文档 其中 Trainer 是数组中的元素 enabled true profilePicture null roles Trainer Client SELECT
  • 显式与隐式 SQL 连接

    显式内连接与隐式内连接之间有效率差异吗 例如 SELECT FROM table a INNER JOIN table b ON a id b id vs SELECT a b FROM table a table b WHERE a id
  • Django 查询:“datetime + delta”作为表达式

    好吧 我的问题如下 假设我有下一个模型 这是一个简单的情况 class Period models Model name CharField field specs here start date DateTimeField field s
  • 如何识别 SQL Azure 中的死锁?

    我有一个由两个实例组成的 Windows Azure 角色 有时交易会失败并显示SqlException与以下文字 事务 进程 ID N 在锁资源上与另一个进程发生死锁 并被选为死锁牺牲品 重新运行事务 现在我已经谷歌搜索了一段时间并阅读这
  • 将 SQL Server 日期时间转换为较短的日期格式

    我有一个datetimeSQL Server 中的列为我提供了这样的数据10 27 2010 12 57 49 pm我想查询此列 但只需让 SQL Server 返回年月日 例如 2010 10 27或类似的东西 我应该研究哪些功能 我应该
  • 如何查找列中未使用的ID? [复制]

    这个问题在这里已经有答案了 可能的重复 SQL查询查找丢失的序列号 https stackoverflow com questions 1057389 sql query to find missing sequence numbers 我
  • 尝试将 Asp.Net Memebership 数据库部署到 SQL Azure

    我一直在尝试让 ASP net 会员服务提供商与托管在 SQL Azure 中的其余数据库配合使用 我已针对数据库运行适当的 SQL Azure 特定脚本来进行设置 这些脚本可从 Microsoft 获取 http archive msdn
  • 在Oracle中查找不包含数字数据的行

    我试图在一个非常大的 Oracle 表中找到一些有问题的记录 即使该列是 varchar2 列 也应包含所有数值数据 我需要找到不包含数字数据的记录 当我尝试在此列上调用 to number col name 函数时 它会抛出错误 我想你可
  • Mysql获取特定表的最后一个id

    我必须从特定的插入表中获取最后的插入 ID 可以说我有这个代码 INSERT INTO blahblah test1 test 2 VALUES test1 test2 INSERT INTO blahblah2 test1 test 2

随机推荐

  • 无可用服务器时的 Serilog 和 seq

    当使用 Serilog 和 Seq 的应用程序找不到将日志发送到的服务器时 预期的行为是什么 每次尝试记录都会抛出异常吗 我希望我的应用程序使用 Seq 服务器 如果可用 但如果不可用 仍继续运行并记录到文件 当使用 Serilog 和 S
  • 为什么 Pry 不能在 Heroku 的控制台中运行?

    我的目标是使用 Pry 作为我的 Rails 应用程序的控制台 无论是在本地还是在我的临时服务器上 但我无法让它在 Heroku 上工作 我正在跟进these https github com pry pry wiki Setting up
  • 如何从 Xcode 项目中删除 cocoa pods 插件之一

    有人知道如何从 Xcode 项目中删除 cocoa pods 插件之一吗 例如我已经安装了afnetworking and nyximagekit在我的项目中 现在 我想删除nyximagekit但保留afnetwoking 怎么做 从 p
  • 为什么在 Fortran 中使用命令 PRINT 会覆盖输入文件?

    我正在编写代码并使用 Fortran 中的输入和输出功能 代码看起来像这样 仅用于简化 PROGRAM TEST REAL DIMENSION 1000 A REAL B INTEGER T Defining input and outpu
  • 获取文件系统限制

    我想编写一个函数来告诉我是否可以将文件 文件夹写入特定路径 我想这样做而不实际将任何文件写入磁盘 有 WINAPI 函数吗 感谢您的帮助 您可以使用获取文件安全性 http msdn microsoft com en us library
  • opencv rtsp流协议

    我想处理并显示从树莓派相机创建的网络 rtsp 流 我有这个代码 include
  • 我的项目中 SDL2 的链接器错误

    我使用 CMake 和 Code Blocks 从源代码构建 SDL2 并尝试将我自己的项目源链接到以下静态库 libSDL2 a libSDL2main a OpenGL32 lib 这三个库包含在称为 libdir 我使用批处理命令 我
  • 一个可定制的 diff 工具,可以生成报告(XML、HTML 格式)

    我想为非回归测试提供差异报告 我的程序是基于 Java 的 但我没有找到任何 API 来满足我的需求 因此 我使用外部工具 CSDiff 它接受 2 个文件作为参数并返回 HTML 报告 这很好而且很容易设置 现在我遇到的唯一问题是 HTM
  • iPhone——当 alpha 设置为零时,为什么 UIViews 上的 TouchBegan 不触发?

    是否正在进行一些优化以删除视图或其他内容 尽管我已经将其设置为透明 但我仍然希望它能够接收触摸事件 如果 alpha 0 这些事件似乎不会触发 你说得对 在透明视图上检测不到触摸 http developer apple com iphon
  • 1024px宽度的屏幕和1024px宽度的平板电脑是冲突的

    我正在使用 MediaQuery 创建响应式网站布局 如下所示 除了一个邪恶的问题外 一切正常 core css 默认应用于站点 它是桌 面版本的样式表 但正如您在此链接中看到的 当屏幕宽度为 1024px 或以下时 它将链接到 table
  • 无论页数如何,pyPdf 输出文件的大小都相同

    我正在尝试使用 pyPdf 将大型 pdf 中的几页提取到单独的文件中 每当我这样做时 生成的文件大小几乎与源文件相同 我认为这与文件内的书签有关 因为如果页面不包含任何链接 输出文件的大小会非常小 我不知道如何从输出文件中排除书签 fro
  • 如何用不同的颜色绘制填充路径/形状

    我需要为屏幕上的形状着色任何我想要的颜色 我目前正在尝试使用 UIImage 来做到这一点 我想根据我的愿望重新着色 据我所知 做到这一点的唯一方法是获取 UIImage 的各个像素 这需要我编写更多行代码来解决这个问题 除了我写的之外 还
  • 如何在下面顶部的集合视图中添加部分标题

    我正在使用带有搜索栏的集合视图 我通过 cod 添加了搜索栏 起始位置为 0 0 从顶部开始 所以现在我的图像看起来像这样 在此处输入图像描述 1 1 但我需要将标题转到我的搜索栏 我是通过故事板完成的 但是在运行时 我的标题名称和搜索栏具
  • 带文本的 QToolButton:覆盖最小高度以模仿常规按钮高度

    我正在显示Q工具按钮 http doc qt io qt 5 qtoolbutton html带有图标加文本的 s Qt 图标旁边的工具按钮文本 http doc qt io qt 5 qt html ToolButtonStyle enu
  • PHP 不从数据库发布信息

    我正在尝试从我创建的数据库发布信息 但它不起作用 我不断收到此错误 您的 SQL 语法有错误 检查与您的 MySQL 服务器版本相对应的手册 了解在第 1 行 Content Calendar ORDER BY Program 附近使用的正
  • 有没有办法获取java文件/行号?

    在 C C 中 文件名由以下命令返回FILE行号由返回LINE Java确实有一个getFileName 但似乎没有对应的getLineNumber 如果能够做这样的事情那就太好了 catch Exception e System err
  • UIGraphicsGetImageFromCurrentImageContext() 视网膜分辨率?

    我正在给我的屏幕拍照并使用UIGraphicsGetImageFromCurrentImageContext 一切都运转良好 然而 在 iPhone 4 上 分辨率看起来相当糟糕 因为它使用的图像似乎是标准分辨率 而不是 2x 有什么方法可
  • 我可以使用自制软件在 x86_64 上安装 arm64 库吗?

    我正在 x86 64 MacOS 11 上针对 arm64 架构进行交叉编译 clang XCode 支持它 但当需要外部库时我遇到问题 例如 让它成为提升 我知道arm64的瓶子是可用的 但看起来没有办法选择它来安装 arch arm64
  • ggtern 破坏 ggplot2 并生成没有轴标签等的图

    我注意到 自从ggplot2发布了他们的新版本 3 3 0 我无法再使用该包ggtern 因为它完全破坏了我用ggplot2 library ggplot2 df lt data frame x c 1 2 y c 2 1 ggplot d
  • 在 SQL 中连接多个表

    有人可以向我解释一下连接吗 内连接根据where条件选择公共数据 左外连接从左表中选择所有数据 而不考虑公共数据 但从右表中获取公共数据 右外连接反之亦然 我知道基础知识 但当涉及到 5 8 10 个以上的表时 问题仍然存在 假设我有 10