如何对 MySQL 中的 UNION 查询中的多个字段求和?

2024-04-04

我目前正在学习如何使用MySQL在查询中我陷入了两难的境地。

目前,我有 2 个查询从多个表中获取数据。两个查询都包含相同数量的列字段和字段名称。

为简单起见,查询的输出如下所示:

查询一:

   FieldOne| FieldTwo | FieldThree | CountOne | CountTwo | CountThree 
    data1  |  data11  |  data111   |    3     |     0    |      0
    data2  |  data22  |  data222   |    0     |     1    |      0
    data3  |  data33  |  data333   |    0     |     0    |      2
    data4  |  data44  |  data444   |    0     |     4    |      0
    data5  |  data55  |  data444   |    0     |     0    |      1

查询二:

   FieldOne| FieldTwo | FieldThree | CountOne | CountTwo | CountThree 
    data1  |  data11  |  data111   |    1     |     0    |      0
    data1  |  data11  |  data111   |    0     |     0    |      2
    data6  |  data66  |  data666   |    0     |     5    |      0

两个查询都包含相同的 FieldOne-FieldThree 数据,但可能包含不同的 CountOne-CountThree 值。

永远不会出现数据包含所有 3 个字段中的值的情况CountOne, CountTwo, CountThree,但仅在ONE这 3 个字段中。

我想做的是创建一个单独的UNION QUERY其输出如下:

   FieldOne| FieldTwo | FieldThree | CountOne | CountTwo | CountThree 
    data1  |  data11  |  data111   |    4     |     0    |      0
    data1  |  data11  |  data111   |    0     |     0    |      2
    data2  |  data22  |  data222   |    0     |     1    |      0
    data3  |  data33  |  data333   |    0     |     0    |      2
    data4  |  data44  |  data444   |    0     |     4    |      0
    data5  |  data55  |  data444   |    0     |     0    |      1
    data6  |  data66  |  data666   |    0     |     5    |      0

基本上,如果同一数据中有多个实例FieldOne,并且有一个相同的值CountOne, CountTwo, or CountThree对于相同数据的多个实例,我想得到SUM该字段的数据并按以下方式分组FieldOne.

但是,如果同一数据有多个实例,但它包含不同实例中的值Count字段,那么查询应该为其创建一个单独的记录,如示例中所示,data1包含两者的值CountOne and CountTwo fields.

我做了这样的事情SQL ViewAccess 2013 的UNION QUERY:

SELECT *
FROM [QueryOne]
ORDER BY FieldOne
UNION SELECT *
FROM [QueryTwo]
ORDER BY FieldTwo;

然而,由于我的知识有限,我一直坚持如何将我想要的内容一次性合并到上述代码中,而不是创建另一个单独的查询。


您可以根据 union 的结果使用带有 sum 和 group by 的选择

select  FieldOne
    , FieldTwo 
    , FieldThree 
    , sum(CountOne )
    , sum(CountTwo )
    , sum(CountThree )
from ( 
          Select FieldOne
          , FieldTwo 
          , FieldThree 
          , CountOne 
          , CountTwo 
          , CountThree 
      FROM my_view1
      UNION ALL
      Select FieldOne
          , FieldTwo 
          , FieldThree 
          , CountOne 
          , CountTwo 
          , CountThree 
      FROM my_view2
  ) T 
group by  FieldOne
    , FieldTwo 
    , FieldThree 
order by FieldOne

如果你想合并不同的值,你可以使用 UNION ;如果你想合并联合选择的所有结果,你可以使用 UNION ALL 。

并对联合子选择中查询的使用进行“有点混乱”

select  FieldOne
    , FieldTwo 
    , FieldThree 
    , sum(CountOne )
    , sum(CountTwo )
    , sum(CountThree )
from ( 
          Select FieldOne
          , FieldTwo 
          , FieldThree 
          , CountOne 
          , CountTwo 
          , CountThree 
      FROM ( select col1 as FieldOne, col2 as FieldTwo .....
             from   ...  
             where 

         ) TT_A
      UNION ALL
      Select FieldOne
          , FieldTwo 
          , FieldThree 
          , CountOne 
          , CountTwo 
          , CountThree 
      FROM ( select col1 as FieldOne, col2 as FieldTwo .....
             from   ...  
             where 

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

如何对 MySQL 中的 UNION 查询中的多个字段求和? 的相关文章

  • INSERT..RETURNING 在 JOOQ 中不起作用

    我有一个 MariaDB 数据库 我正在尝试在表中插入一行users 它有一个生成的id我想在插入后得到它 我见过this http www jooq org doc 3 8 manual sql building sql statemen
  • MySQL:计算日期/时间之间的差异 - 仅在周一至周五“工作周”期间

    我需要计算开始日期 时间和结束日期 时间之间的差异 但是 我只想在 5 天的工作周内执行此操作 不包括周六 周日 做这个的最好方式是什么 我的想法是 从日期开始 我必须获取星期几 如果是工作日 那么我将添加到累加器中 如果不是 那么我不会添
  • 在mysql中的单个查询中更新多个表

    我有三个查询 我想要一个 这是我的查询 UPDATE tab1 SET a WHERE id 3 UPDATE tab2 SET b WHERE id 9 UPDATE tab3 SET c WHERE id 5 您可以尝试下面的代码 UP
  • 显示标准化数据

    跟进问题 添加 2 个不同表的总和 https stackoverflow com questions 39717541 adding sum from 2 different tables 我创建了3个表 members videos v
  • 从按日期时间排序的 MySQL 表中获取用户的最后一个条目

    我有一张看起来像这样的桌子 USERNAME DATA DATETIME Jhon text1 2010 06 01 16 29 43 Mike text2 2010 06 01 16 29 22 Silver text3 2010 05
  • 从另一台计算机访问 MYSQL

    我想开发一个java桌面应用程序 我想在其中设置服务器 这意味着我在这里使用mysql db 该数据库将仅存储在一台电脑上 其余所有用户都可以访问该数据库 所以 我听说了mysql远程连接 其中尝试了一些事情 这些措施如下 我的电脑已连接w
  • 如何在 MySQL 中求和时间?

    正如您在图片中看到的 我有一份停机报告 显示了所选工厂在选定日期的停机时间 现在我想添加所有的值 Time Duration 列并将其显示在附近的单独显示中 TOTAL TIME DURATION 例如 在图像中 所选日期为 2015 年
  • 即使没有结果也返回一个值

    我有这种简单的查询 它返回给定 id 的非空整数字段 SELECT field1 FROM table WHERE id 123 LIMIT 1 问题是如果找不到 id 结果集就是空的 我需要查询始终返回一个值 即使没有结果 我有这个东西工
  • libmysqlclient.a 和 libmysqlclient_r.a 有什么区别?

    我应该使用哪个来链接 mysqlclient 库 它们之间有什么区别 我似乎找不到答案 谢谢 较新版本的 MySQL 客户端发行版不包含 r 版本 有些可能有从 libmyqslclient r a 到 libmyqslclient a 的
  • 无法在 Mac 上启动 MySQL

    使用 Brew 安装后 我无法运行 MySQL 我使用的是 OS X El Capitan 版本 10 11 3 和 MySQL Server 版本 5 7 11 当我启动服务器时 我收到 启动 MySQL 错误 服务器退出而不更新 PID
  • MySQL 错误 1172 - 结果包含多行

    在存储过程中运行查询时 我从 MySQL 收到此错误 错误代码 1172 结果包含多行 我理解错误 我正在做一个SELECT INTO var list 因此查询需要返回单行 当我使用LIMIT 1 or SELECT DISTINCT 错
  • mysql 中的二进制、十六进制和八进制值

    我对在 mysql 数据库中使用二进制 十六进制和八进制系统非常感兴趣 首先 请给我一个建议 为什么我们在存储信息时需要它们 因为信息太多 或者为什么 另外 哪种类型的值必须存储在标记系统中 另外这里还有像 这是例子 gt SELECT 5
  • 让登录更安全

    我已使用此代码进行管理员登录 仅当用户输入正确的用户名和密码时才应打开loginhome php 但后来我意识到这根本不安全 任何人都可以直接访问 mywebsite loginhome php 而无需登录 注销后 可以使用后退按钮打开 l
  • ORDER BY 字段内的 MySQL 子查询。 (没有内连接)

    有很多与此相关的问题 但都具有使用内部联接的相同答案 这 我认为 在这里是不可能的 如果我错了请告诉我 我现在正在做的是调用两个不同的 mysql 查询来获取结果 它工作完美 db gt query SELECT FROM meta WHE
  • 如何通过Elasticsearch模糊匹配电子邮件或电话?

    我想通过 Elasticsearch 对电子邮件或电话进行模糊匹配 例如 匹配所有以以下结尾的电子邮件 gmail com or 匹配所有电话开头136 我知道我可以使用通配符 query wildcard email gmail com
  • MYSQL - 使用逗号分隔字符串作为变量输入的存储过程

    我希望有人能够提供帮助 我已经创建了我的第一个存储过程 没什么花哨的 但是我遇到了问题 我想给它一个字符串输入 例如 1 2 3 4 5 然后它执行一个简单的操作SELECT FROM TABLE WHERE EAN IN VAR 所以存储
  • MySQL 与日语字符

    我试图弄清楚如何创建一个表 以便我可以在其中插入日语名字 现在我有 Type InnoDB Encoding UTF 8 Unicode utf8 Collation utf8 general ci 但是 当我插入字符时 它显示为 当我使用
  • MySQL 追加字符串

    How can I append a string to the end of an existing table value Let s say I have the table below And let s say that Mari
  • PHP 与 MySQL 查询性能( if 、 函数 )

    我只看到这个artice http www onextrapixel com 2010 06 23 mysql has functions part 5 php vs mysql performance 我需要知道在这种情况下什么是最好的表
  • 内部 while 循环不工作

    这是我项目网页上的代码片段 这里我想显示用户选择的类别 然后想显示属于该类别的主题 在那里 用户可以拥有多个类别 这没有问题 我可以在第一个 while 循环中打印所有这些类别 问题是当我尝试打印主题时 结果只显示一行 但每个类别中有更多主

随机推荐

  • 如何在并行进程(python)中将项目追加到列表中?

    这是我正在使用的更复杂代码的一个非常简单的版本 问题是我想将 method 函数中计算的项目附加到稍后可以显示的某个列表中 但是 当运行此代码时 列表对象为空 而结果数组已满 import multiprocessing as mp glo
  • Chrome 中意外的令牌默认值 ({}).default

    我收到错误 SyntaxError 意外的默认令牌 在 Chrome Opera 中的任何对象上获取或设置属性 默认 时 default 有人可以解释为什么会发生这种情况吗 upd 请大家注意 这对 FF 没有意义 因此在测试时您可能会错过
  • 选择未聚合的变量,功能上依赖于 GROUPing 变量

    背景 我正在一个非常受限的 T SQL 环境中工作 其中只能定义一个对象的 主体 VIEW 大概是 in CREATE VIEW My View AS 在引擎盖下 这是我的 VERSION https learn microsoft com
  • 如何获取多选框的所有选定值?

    我有一个
  • 从列表 PySpark 的列表中创建单行数据框

    我有一个这样的数据data 1 1 1 2 1 3 1 4 1 5 1 6 我想创建一个 PySpark 数据框 我已经使用了 dataframe SQLContext createDataFrame data features 但我总是得
  • 共享主机上的 403 禁止 Laravel

    我有一个共享主机 我正在尝试让我的 laravel 项目在其上运行 我正在使用 voyager 进行管理面板 我将我的应用程序公共文件夹放在 public html 中 并将项目的其余部分放在 public html 的同一级别上 所以它看
  • 从代理服务器后面调用 Web 服务

    我需要在将使用 Web 服务 XML SOAP 服务 的应用程序 C 中添加功能 现在 该应用程序可以 并且大部分 在具有代理服务器的企业环境中使用 我了解 SOAP 服务使用 HTTP 协议 因此应该使用端口 80 该端口通常保持打开状态
  • 如何在这个线性模型中强制删除截距或等效项?

    考虑下表 DB lt data frame Y rnorm 6 X1 c T T F T F F X2 c T F T F T T Y X1 X2 1 1 8376852 TRUE TRUE 2 2 1173739 TRUE FALSE 3
  • Laravel Model->save() 返回 false 但没有错误

    通常当我打电话时Model gt save 它成功地在数据库中创建了新记录 我正在尝试调试没有发生任何事情的情况Model gt save 返回假 我怎样才能知道发生了什么 user new User user gt fields exam
  • Confluence Schema 注册表持久化

    我希望即使服务器重新启动也能够保留具有固定 id 的模式 是否可以将架构保留在架构注册表中 以便在服务器崩溃后使它们具有相同的 id 否则 当模式注册服务器启动时 是否可以对具有固定 id 的模式进行硬编码 这就是模式注册的目的 模式有一个
  • Whatsapp消息自动回复方法

    我在play store上看到很少有应用程序支持WhatsApp的自动回复 我在网上搜索了方法 但我找到的只是这段代码 Uri uri Uri parse smsto 99 Intent i new Intent Intent ACTION
  • Jquery 延迟加载回调

    我目前正在使用Jquery 延迟加载 http www appelsiini net projects lazyload我想知道当我的容器中的所有图像结束加载时 当延迟加载发挥了所有魔力时 是否有一种方法可以进行回调 原因是我正在使用jSc
  • 如何将虚拟机组合到 Aurelia 验证渲染器中的视图中

    我正在尝试使用 aurelia validation 插件对表单执行验证 我正在创建一个自定义验证渲染器 它将更改输入框的颜色并在框旁边放置一个图标 单击或悬停该图标时 会出现一条弹出消息 其中显示实际的错误消息 目前 我正在渲染器中手动渲
  • 在 django 中处理动态 MultipleChoiceField

    到目前为止我看到的所有答案都让我感到困惑 我制作了一个根据传入的参数以及数据库中存储的问题动态构建的表单 这一切都工作正常 注意 它不是一个 ModelForm 只是一个 Form 现在我正在尝试保存用户的响应 我如何迭代他们提交的数据以便
  • SwiftUI:仅在 iOS 14+ 上使用“accessibilityIdentifier”

    给出以下代码 struct CopyButtonStyle ButtonStyle init func makeBody configuration Configuration gt some View let copyIconSize C
  • SQL 比较每小时总订单并删除当前库存可能吗?

    不确定是否可以单独使用 sql 来完成此操作 但我宁愿询问然后向流程添加另一个步骤 比如说我有一组虚拟订单 Supplier Destination Req Time Prd Code Prd Description Qty A B 01
  • 什么是日志记录?如何使用 Apache Commons 日志记录?

    Web 应用程序服务器希望记录哪些信息 为什么 据我了解 org apache commons logging Log 是一个抽象了其他Logging类提供的功能的接口 这同样适用于接口LogFactory 我试图理解的代码有 Log au
  • jQuery Mobile:页面事件触发的顺序是什么?

    我必须快速构建应用程序的原型 并且我想确切地知道在哪里插入各种应用程序逻辑 您能否迭代使用 PhoneGap 和 jQueryMobile 时的事件及其触发顺序 如果能够清楚地了解以下事件 顺序 那就太好了 A 当您第一次打开应用程序时 B
  • 在 gradle-node-plugin 中配置 nodeModulesDir

    我尝试设置 npm 包的缓存 这是我的插件配置 node version 4 5 0 npmVersion 3 10 6 distBaseUrl https nodejs org dist download true workDir fil
  • 如何对 MySQL 中的 UNION 查询中的多个字段求和?

    我目前正在学习如何使用MySQL在查询中我陷入了两难的境地 目前 我有 2 个查询从多个表中获取数据 两个查询都包含相同数量的列字段和字段名称 为简单起见 查询的输出如下所示 查询一 FieldOne FieldTwo FieldThree