奇怪/深奥的连接语法

2023-12-14

我已经获得了这个旧的 SQL 代码(表名已更改)来复制,并且 JOIN 语法不是我以前见过的东西,而且很难用 google 搜索到:

select <stuff>

from A

inner join B
on A.ID = B.A_ID

inner join C  -- eh? No ON?

inner join D
ON C.C_ID = D.C_ID

ON B.C_ID = D.C_ID -- a second ON here? what?

当我看到代码时,我以为我会收到损坏的代码并且它不会运行。

但确实如此。 (SQL Server 2012)

它有什么作用?有没有更合理/标准的编写方式?这里发生了什么事?


虽然不寻常,但这是完全有效的 tsql。通常,当您对一组相互内连接的相关表进行外连接时,您会看到这种方法。恕我直言,更好的写法是:

inner join B
   on A.ID = B.A_ID
inner join (C inner join D ON C.C_ID = D.C_ID) 
   ON B.C_ID = D.C_ID 

这使得连接逻辑清晰 - 并且对读者也有帮助。此外,它还让读者知道开发人员是故意这样做的。因此,让这是一个糟糕编码的例子。评论不寻常的事情。解释一下事情。让某人定期检查您的代码,以帮助改进您的风格和用法。

您可以通过重新排列 from 子句中表的顺序来以“典型”风格编写此内容 - 但我猜测当前版本对于真实的表名称更具逻辑意义。

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

奇怪/深奥的连接语法 的相关文章

  • 独立对列进行排序,使得所有空值都位于每列的最后

    这是一个名为的示例表animal name color fox brown fox red dog gold 现在 我想要的是这样的结果 fox dog brown gold red 名称应该是结果的列 不同颜色值作为行 我的第一个想法是
  • 在sqlite SQL语句中与order by子句结合使用limit

    下面的两条 SQL 语句总是会产生相同的结果集吗 1 SELECT FROM MyTable where Status 0 order by StartTime asc limit 10 2 SELECT FROM SELECT FROM
  • 如何在存储过程中实现 sql 搜索功能 (Sql Server 2008)

    我需要编写一个存储过程 该过程将使用 sql server 2008 根据可选参数搜索表 将会有两种模式 基本搜索模式 我们只传递一些文本 高级搜索模式 使用可选参数而不使用 SearchText 为了进行测试 我使用 AdventureW
  • 是否有适用于所有数据库的标准sql

    如下所示 不同数据库的语法有所不同 是否存在适用于所有数据库的标准方法 有没有什么工具可以将任意sql转换为任意sql SQL Server 2005 CREATE TABLE Table01 Field01 int primary key
  • 对多个数据库执行 SQL 查询

    我知道我的帖子与该论坛中的其他帖子的标题非常相似 但我真的找不到我需要的答案 这是我的问题 我的 Windows Server 上运行着 SQL Server 在我的 SQL Server 中 我有大约 30 个数据库 它们都具有相同的表和
  • MySQL 按重复项从上到下排序

    我有一个lammer问题 因为我不是mysql专业人士 我有类似的字段 id color 1 red 2 green 3 yellow 4 green 5 green 6 red 我想按重复项进行分组 最常见的重复项先进行分组 所以应该这样
  • 探查器模板可以迁移到较新版本的 SQL Profiler 吗?

    是否可以将 Profiler 模板迁移到较新版本的 SQL Server 就我而言 我想将 SQL 2008 模板带到 2012 年 我尝试过 1 直接文件复制和 2 导出 导入 在这两种情况下 旧模板都会运行 但无法修改 修改后会出现以下
  • PHP 通过 SSL 连接到 MS SQL

    我想要实现的目标非常简单 我想通过安全连接从 PHP 脚本连接到外部 MS SQL 数据库 然而 这已被证明是有问题的 到目前为止 经过三个小时的研究 我不知所措 客户端的平台是Ubuntu 这意味着我无法使用SQLSRV 安全连接已经在不
  • 重命名重复行

    这是我的问题的一个简化示例 我有一个表 其中有一个包含重复条目的 名称 列 ID Name 1 AAA 2 AAA 3 AAA 4 BBB 5 CCC 6 CCC 7 DDD 8 DDD 9 DDD 10 DDD 进行 GROUP BY 操
  • 为什么 SqlClient 在传递 SqlXml 时使用不必要的 XML 转换?

    我有一个关于从 C 代码将 xml 数据类型传递给查询的问题 首先 这是 SQL Server 上的一个表 CREATE TABLE dbo XmlTable id int IDENTITY 1 1 NOT NULL dat xml NOT
  • MySQL 查询到 CSV [重复]

    这个问题在这里已经有答案了 有没有一种简单的方法来运行MySQL查询来自linux命令行并以csv格式输出结果 这就是我现在正在做的事情 mysql u uid ppwd D dbname lt lt EOQ sed e s g tee l
  • SELECT 语句会受到 SQL 注入攻击吗?

    实际上有2个问题 我知道我必须尽可能多地使用存储过程 但我想知道以下内容 A 我可以从 SELECT 语句 例如 Select from MyTable 获得 SQL 注入攻击吗 B 另外 当我在 ASP NET 中使用 SQLDataSo
  • 内连接不重复,可以吗?

    鉴于这两个表 表 A1 有两行具有相同的值 a A1 a a 表 A2 有两行主键值为 A B 它们与 a 关联 A2 PK col2 A a B a 我想要的是 A1 和 A2 的连接并得到这个结果 a A a B 显然内连接在这里不起作
  • MyBatis:在一个查询中通过注释收集

    我有一个 xml 映射器 一个选择映射器和一个结果映射器 它工作没有问题 但我想使用注释 我的映射器
  • 月份增量查询

    我想通过添加 1 个月来更新数据库中的月份 但我不知道如何在以下存储过程查询中添加月份 我不擅长 sql 请检查它 ALTER PROCEDURE dbo ChangePassword password varchar 20 epasswo
  • 为什么我可以像调用实例方法一样调用类方法?

    我正在查看这个例子 class SQLObject def self columns return columns if columns columns DBConnection execute2 lt lt SQL first SELEC
  • 如何在 Play java 中创建数据库线程池并使用该池进行数据库查询

    我目前正在使用 play java 并使用默认线程池进行数据库查询 但了解使用数据库线程池进行数据库查询可以使我的系统更加高效 目前我的代码是 import play libs Akka import scala concurrent Ex
  • 为什么我的 CASE 语句要求 THEN 部分的数据类型为 INT?

    我正在尝试运行一个查询 其中以下 CASE 语句是其中一行 我正在使用报表生成器 3 0 但是 我收到一条错误消息 将 varchar 值 Case 1 转换为 int 数据类型时转换失败 Microsoft SQL Server 错误 2
  • SQL不允许表中有重复记录

    如何使其不添加重复项 我想让它通过 ID 之外的所有其他列进行检查 我希望这个无效 ID col1 col2 col3 1 first middle last ID col1 col2 col3 2 first middle last 我希
  • Visual Studio 2010 中的数据库设计器

    我需要创建一个全新的 Sql Server 2008 数据库 并希望使用 Visual Studio 2010 Ultimate 中的数据库项目 我已经创建了该项目并在下面添加了一个表格dbo架构 桌子 sql仅以纯文本形式显示 但带有颜色

随机推荐

  • Azure Web App 是否关心其实例是否健康?

    如果我将 Web 应用程序 以前称为 Azure 网站 部署到 Azure 中具有几个实例的应用程序托管计划 规模 2 实例前面的负载均衡器会关心是否有任何实例不健康吗 我正在解决有时会导致我的网站在大约 50 的情况下返回 http 50
  • 使用 OpenCV 和 Python 显示网络摄像头源

    我一直在尝试创建一个简单的程序Python它使用 OpenCV 从我的网络摄像头获取视频源并将其显示在屏幕上 我知道我部分在那里 因为窗口已创建并且网络摄像头上的灯闪烁 但窗口中似乎没有显示任何内容 希望有人能解释我做错了什么 import
  • 如何在嵌套列表上使用映射函数并将字符串转换为整数?

    我需要使用Python 2 4 4 中的map函数为列表中的每个项目加1 所以我尝试将字符串转换为整数 line 10 13 n 3 4 n 5 3 n 1 13 map lambda X X 1 int line 这不起作用是因为 n还有
  • 指针和多维数组[重复]

    这个问题在这里已经有答案了 可能的重复 如何在 C 中使用数组 二维数组是双指针吗 二维数组和指针 我知道这是一个非常基本的问题 但无论经过多少谷歌搜索 我都无法弄清楚这一点 这就是我将其发布在这里的原因 在 C 中考虑声明int x 10
  • getch() 和 getchar() 有什么区别?

    两者之间的确切区别是什么getch and getchar功能 getchar 是一个从标准输入获取字符的标准函数 getch 是非标准的 它从键盘获取一个字符 可能与标准输入不同 并且不回显它
  • 解码作为 json 响应返回的 html - android

    我将编码后的 html 作为 json 响应进行跟踪 并且不知道如何将其解码为正常的 html 字符串 顺便说一下 这是一个 achor 标签 x3ca hrefx3dx22http wordnetweb princeton edu per
  • 抛出异常时从堆栈跟踪和帧中获取文件名

    我试图在引发异常时获取文件名和源代码行号 但我什么也没得到 class Program static void Main string args try throw new InvalidOperationException catch I
  • C# try catch 语句中的变量作用域问题

    我不想在这里问这个简单的问题 但我已经研究了一段时间但无济于事 这极大地限制了我的申请 为什么我在 try 块内的 excelWorksheet 变量上出现红色波浪线 无法在此范围内声明名为 excelWorksheet 的本地或参数 因为
  • Swift 将货币字符串转换为双精度

    我有一根绳子 4 102 33 需要转换为双精度 这永远是美国 我唯一的方法是破解 and 然后转换为双精度 似乎NSFormatter只允许我转换为货币 而不是从货币转换 有没有内置功能或比仅仅删除更好的方法 and 在将其转换为双精度之
  • 10.8中如何显示文件复制进度

    FSCopyObject异步在 OS X v10 8 中已弃用 现在如何显示文件复制操作的进度指示器 我的回答假设你正在谈论展示一个项目的进展单个文件被复制 Yes FSCopyObjectAsync 已被弃用 但尚未消失 正如您所发现的
  • 使用 htaccess 重写特定文件的路径

    我想为具有长文件路径的目录中的特定文件创建一个友好的 URL 并重命名该文件 我什至不确定这是否可能 到目前为止我已经在 htaccess 中尝试过 RewriteEngine On Options FollowSymLinks Rewri
  • 使用 PIL 在 python 上向图像添加透明圆圈

    我有一个 python 程序 它创建一个带有圆圈的 png 文件 现在我希望这个圆是半透明的 给定一个 alpha 值 这是我所做的 img map Image new some arguments here tile Image open
  • 将 Woocommerce 变体属性下拉列表中的默认“选择选项”文本替换为不同的自定义文本

    我刚刚开始使用 Woocommerce 并对可变产品的下拉选择字段有疑问 在 woocommerce 中 如果在此下拉列表中未选择任何内容 则会显示 选择选项 文本 我需要每个下拉选择字段选项在尚未选择任何内容时显示不同的文本 我发现这段代
  • 在 MVC 视图中迭代匿名类型数据

    我将匿名类型的结果放入一些视图数据中 var projectData from p in db Projects orderby p title select new Title p title DevURL p devURL N A QA
  • 为什么返回响应的格式很奇怪?

    我正在学习node中的后端 我正在尝试执行以下代码 const axios require axios async function getData const resp await axios get https jsonplacehol
  • ng-animate:有条件地切换“返回”过渡(BUG?)

    大家好 通读这个谷歌群组以及从那里链接的小提琴和博客文章 我设法使用 ng animate 实现页面转换 Here s我的小提琴 the fiddle is nicely commented please let me know if an
  • mySQL子查询限制

    这可能是一个简单的 我怎样才能通过这个查询实现我想要的 delete from posts where id not in SELECT id FROM posts order by timestamp desc limit 0 15 所以
  • 如何从scrapy调用输出文件名

    scrapy crawl test o test123 csv 如何从代码中调用输出文件名 即我想使用在终端中输入的文件名spider closed功能 classmethod def from crawler cls crawler ar
  • 将产品标题移至 Woocommerce 存档页面上的产品图片上方

    我正在尝试将产品标题移至产品存档页面上的产品图像上方 我已经设法弄清楚如何移动信息 但价格也在图像上方移动 我只希望产品标题位于产品图片上方 价格应保持在较低水平 并带有 添加到购物车 按钮等 这是我的代码片段和迄今为止的结果屏幕截图 re
  • 奇怪/深奥的连接语法

    我已经获得了这个旧的 SQL 代码 表名已更改 来复制 并且 JOIN 语法不是我以前见过的东西 而且很难用 google 搜索到 select