SQL 将第二个表中的行计数添加到主查询

2024-01-11

我正在尝试改进一个(不是那么多)简单的查询:

  • 我需要检索表 A 中的每一行。
  • 然后将表 A 与表 B 连接起来,这样我就可以获得所需的所有数据。
  • 同时,我需要添加一个额外的列,其中包含表 C 中的 count()。

就像是:

SELECT a.*,
       (SELECT Count(*)
        FROM   table_c c
        WHERE  c.a_id = a.id) AS counter,
       b.*
FROM   table_a a
       LEFT JOIN table_b b
              ON b.a_id = a.id  

这是可行的,但实际上,我只是进行了 2 个查询,我需要改进它,以便它只执行一个(如果可能的话)。

谁知道我怎样才能实现这一目标?


最简单的方法可能只是将相关子查询移至子查询中。

NOTE: 许多优化器非常有效地处理相关子查询。您的示例查询可能是完全合理的。

SELECT
  a.*,
  b.*,
  c.row_count
FROM
  table_a   a
LEFT JOIN
  table_b   b
    ON b.a_id = a.id
LEFT JOIN
(
  SELECT
    a_id,
    Count(*)   row_count
  FROM
    table_c
  GROUP BY
    a_id
)
  c
    ON c.a_id = a.id

另一个注意事项:SQL 是一个表达式,它不会直接执行,它会使用嵌套循环、散列连接等转换为计划。不要认为有两个查询是一件坏事。在这种情况下,与单个查询相比,我的示例可能会显着减少读取次数,然后使用GROUP BY and COUNT(DISTINCT).

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

SQL 将第二个表中的行计数添加到主查询 的相关文章

随机推荐

  • 如何在 Windows 窗体应用程序中检测 Windows 10 何时进入平板电脑模式?

    Update 虽然不是最优雅的解决方案 但似乎有效的一种方法是观察相关的注册表值 下面是使用 WMI 执行此操作的示例 如果有比这更好的解决方案 我很乐意听取任何人的意见 using System using System Manageme
  • 使用 Ajax 的 jQuery 自动完成不会解析

    我正在尝试使用 ajax 的基本自动完成功能 我无法理解结果 我对 jQuery 比较陌生 所以我对我的语法表示歉意 我更擅长 PHP category title autocomplete source function request
  • Pandas dataframe - 重置运行总和

    我想计算给定列中的运行总和 当然不使用循环 需要注意的是 我还有另一列指定何时将运行总和重置为该行中存在的值 最好通过以下示例进行解释 reset val desired col 0 0 1 1 1 0 5 6 2 0 4 10 3 1 2
  • 使用 mssql for node.js 连接到 SQL Server

    当我使用以下命令连接到 SQL Server 时收到错误消息mssqlNode js 的模块 错误 连接到 192 168 1 101 sql 1433 失败错误 getaddrinfo ENOENT var config driver m
  • 使用 Qt 将 HTML 转换为 PDF

    我正在尝试将 HTML 文件转换为 PDF 整个想法是创建一个包含多个页面的 pdf 用 HTML 文件内容填充第一个页面 目前我正在尝试这样做 代码是 include qprinterexample h include
  • 由于错误的 strcmp 参数处理而生成警告

    所以我有一个 unsigned char pMyPtr 分配给某事 然后我想将其与任意字符串进行比较 strcmp const char const char 但是当我这样做时 clang编译器告诉我 warning passing aka
  • 您将如何审核 ASP.NET 成员资格表,同时记录哪些用户进行了更改?

    使用基于触发器的方法进行审计日志记录 我记录对数据库中的表所做的更改的历史记录 我使用的方法 使用静态 SQL Server 登录 记录哪个用户进行了更改 涉及在每个数据库连接开始时运行一个存储过程 触发器在记录审计行时使用此用户名 触发器
  • Pip 在 Windows 7 中挂起

    I have Python 2 7 10在 Windows 7 上使用 pip 安装 当我尝试安装软件包甚至只是运行时pip在没有选项的cmd中 它堆叠 不打印任何内容 甚至ctrl c也不起作用 我必须关闭cmd 任务管理器显示3个正在运
  • CESS_ESP 标签的定义

    我正在使用NLTK http www nltk org CESS ESP 数据包 我已经能够使用适应 的意大利面标记器 https code google com p spaghetti tagger and a HiddenMarkovM
  • 通过管道发送到 AWS SES 地址的电子邮件到 EC2 上的 PHP 脚本

    我们在 Amazon SES 上设置了一个域 我需要将传入的电子邮件通过管道传输到 EC2 实例上的 PHP 脚本中的特定地址进行处理 我已经在 Cpanel 的共享服务器上使用转发器完成了此操作 opt alt php56 usr bin
  • 使用同一个类的函数在类内创建线程

    我希望能够定义一个包含一些数据成员的类 以及一个可以访问这些数据成员的函数 这些数据成员是私有的 然后我想要一个公共函数 它创建一些线程 这些线程对类的数据成员进行操作 我在编译代码时遇到一些问题 不要担心互斥体或数据保护 这不会成为问题
  • R 读取 zip 数据文件而不解压缩它

    我有一个非常大的 zip 文件 我试图将其读入 R 而不像这样解压缩 temp lt tempfile Sales fileext c zip data lt read table unz temp Sales dat nrows 10 h
  • Typemock Isolator:模拟未注入的依赖项?

    My WidgetDoer类取决于Foo 未注入 我需要假装 foo的实施DoStuffWith 然后验证Do 返回结果 这是我的真实代码的简化表示 public class WidgetDoer readonly Foo foo publ
  • 淡入、淡出、淡入

    是什么不同之处之间fadeIn vs fadeOut vs fadeTo fadeIn http api jquery com fadeIn 从元素当前的不透明度渐变到 1 fadeOut http api jquery com fadeO
  • http 和 https 的本地存储相同吗?

    我正在寻找一种方法来为两者使用相同的 localStorage 或类似的 http example com and https example com 根据this https developer mozilla org En DOM St
  • 获取最顶层的UIViewController

    如果我在UINavigationController 我怎样才能找出最上面的是什么UIViewController 或者就我而言 我想知道是否某个UITableViewController是不是最上面的 我尝试使用 self navigat
  • 如何在两个(或多个)XAML 文件之间共享 VisualStateManager?

    我们正在编写一个基于 Prism 的 Silverlight 应用程序 并且我们在单独的模块中拥有一大堆页面 页面之间的转换是通过导航事件处理的 每个模块都实现了以下方法 以在导航到页面时显示页面并在导航自页面时隐藏页面 public vo
  • OSM - 使用自定义图标显示当前位置

    谁能告诉我如何使用自定义图标在 OSM 地图上显示我当前的位置 使用默认人物图标 MyLocationNewOverlay myLocationoverlay new MyLocationNewOverlay mapView myLocat
  • 如何将导航后退按钮更改为图像?

    所以我有这些用于自定义导航栏和项目的图像 它们看起来像这样 目前我设置了自定义导航栏 但是我不知道如何将默认的 后退 按钮更改为后退按钮图像下面 这就是我想知道的 任何帮助将不胜感激 注意 我正在使用故事板 谢谢 这是导航栏 这是我的后退按
  • SQL 将第二个表中的行计数添加到主查询

    我正在尝试改进一个 不是那么多 简单的查询 我需要检索表 A 中的每一行 然后将表 A 与表 B 连接起来 这样我就可以获得所需的所有数据 同时 我需要添加一个额外的列 其中包含表 C 中的 count 就像是 SELECT a SELEC