<tfoot id='lqHpu'></tfoot>
  1. <small id='lqHpu'></small><noframes id='lqHpu'>

  2. <legend id='lqHpu'><style id='lqHpu'><dir id='lqHpu'><q id='lqHpu'></q></dir></style></legend>

        <bdo id='lqHpu'></bdo><ul id='lqHpu'></ul>
    1. <i id='lqHpu'><tr id='lqHpu'><dt id='lqHpu'><q id='lqHpu'><span id='lqHpu'><b id='lqHpu'><form id='lqHpu'><ins id='lqHpu'></ins><ul id='lqHpu'></ul><sub id='lqHpu'></sub></form><legend id='lqHpu'></legend><bdo id='lqHpu'><pre id='lqHpu'><center id='lqHpu'></center></pre></bdo></b><th id='lqHpu'></th></span></q></dt></tr></i><div id='lqHpu'><tfoot id='lqHpu'></tfoot><dl id='lqHpu'><fieldset id='lqHpu'></fieldset></dl></div>
    2. 如何填补 MySQL 中的日期空白?

      How to fill date gaps in MySQL?(如何填补 MySQL 中的日期空白?)
      <tfoot id='eLGQe'></tfoot>
      <i id='eLGQe'><tr id='eLGQe'><dt id='eLGQe'><q id='eLGQe'><span id='eLGQe'><b id='eLGQe'><form id='eLGQe'><ins id='eLGQe'></ins><ul id='eLGQe'></ul><sub id='eLGQe'></sub></form><legend id='eLGQe'></legend><bdo id='eLGQe'><pre id='eLGQe'><center id='eLGQe'></center></pre></bdo></b><th id='eLGQe'></th></span></q></dt></tr></i><div id='eLGQe'><tfoot id='eLGQe'></tfoot><dl id='eLGQe'><fieldset id='eLGQe'></fieldset></dl></div>

          <tbody id='eLGQe'></tbody>

              <bdo id='eLGQe'></bdo><ul id='eLGQe'></ul>

              <small id='eLGQe'></small><noframes id='eLGQe'>

            • <legend id='eLGQe'><style id='eLGQe'><dir id='eLGQe'><q id='eLGQe'></q></dir></style></legend>

              • 本文介绍了如何填补 MySQL 中的日期空白?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着跟版网的小编来一起学习吧!

                问题描述

                如何填补 MySQL 中的日期空白?这是我的查询:

                <前>SELECT DATE(posted_at) AS 日期,COUNT(*) AS 总数,SUM(attitude = 'positive') 为正,SUM(attitude = 'neutral') 作为中立,SUM(attitude = 'negative') AS 负数从`消息`WHERE (`messages`.brand_id = 1)AND (`messages`.`spam` = 0AND `messages`.`duplicate` = 0AND `messages`.`ignore` = 0)GROUP BY 日期 ORDER BY 日期

                它返回正确的结果集 - 但我想用零填充日期开始和结束之间的空白.我该怎么做?

                解决方案

                您需要创建一个辅助表并用从 startend 的所有日期填充它,然后只需 LEFT JOIN 与该表:

                SELECT d.dt AS 日期,COUNT(*) AS 总数,SUM(attitude = 'positive') 为正,SUM(attitude = 'neutral') 作为中立,SUM(attitude = 'negative') AS 负数FROM 日期 d左加入留言ON m.posted_at >= d.dtAND m.posted_at 

                基本上,您在这里需要的是一个虚拟行源.

                MySQL 是唯一缺乏生成它的方法的主要系统.

                PostgreSQL 实现了一个特殊的函数 generate_series 来做到这一点,而 Oracle 和 SQL Server 可以使用递归(CONNECT BY 和递归CTE,相应地).

                How i can fill date gaps in MySQL? Here is my query:

                SELECT DATE(posted_at) AS date,
                    COUNT(*) AS total,
                    SUM(attitude = 'positive') AS positive,
                    SUM(attitude = 'neutral') AS neutral,
                    SUM(attitude = 'negative') AS negative
                    FROM `messages`
                    WHERE (`messages`.brand_id = 1)
                    AND (`messages`.`spam` = 0
                    AND `messages`.`duplicate` = 0
                    AND `messages`.`ignore` = 0)
                    GROUP BY date ORDER BY date
                

                It returns proper result set - but i want to fill gaps between dates start and end by zeros. How i can do this?

                解决方案

                You'll need to create a helper table and fill it with all dates from start to end, then just LEFT JOIN with that table:

                SELECT  d.dt AS date,
                        COUNT(*) AS total,
                        SUM(attitude = 'positive') AS positive,
                        SUM(attitude = 'neutral') AS neutral,
                        SUM(attitude = 'negative') AS negative
                FROM    dates d
                LEFT JOIN
                        messages m
                ON      m.posted_at >= d.dt
                        AND m.posted_at < d.dt + INTERVAL 1 DAYS
                        AND spam = 0
                        AND duplicate = 0
                        AND ignore = 0
                GROUP BY
                        d.dt
                ORDER BY
                        d.dt
                

                Basically, what you need here is a dummy rowsource.

                MySQL is the only major system which lacks a way to generate it. PostgreSQL implements a special function generate_series to do that, while Oracle and SQL Server can use recursion (CONNECT BY and recursive CTEs, accordingly). 这篇关于如何填补 MySQL 中的日期空白?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持跟版网! 本站部分内容来源互联网,如果有图片或者内容侵犯了您的权益,请联系我们,我们会在确认后第一时间进行删除!
                上一篇:MySQL 数据透视表列数据作为行 下一篇:任何在 InnoDB 上实现类全文搜索的方法
                相关文档推荐 虚假外键约束失败 Bogus foreign key constraint fail(虚假外键约束失败) 如何在codeigniter活动记录中插入查询后获取最后一个插入ID how to get last insert id after insert query in codeigniter active record(如何在codeigniter活动记录中插入查询后获取最后一个插入ID) 强制 InnoDB 重新检查表/表上的外键? Force InnoDB to recheck foreign keys on a table/tables?(强制 InnoDB 重新检查表/表上的外键?) 如何使用 Sequelize CLI 从 Sequelize 模型自动生成迁移? How to auto generate migrations with Sequelize CLI from Sequelize models?(如何使用 Sequelize CLI 从 Sequelize 模型自动生成迁移?) 无需重启服务器即可清除 MySQL 查询缓存 Clear MySQL query cache without restarting server(无需重启服务器即可清除 MySQL 查询缓存) ALTER TABLE 添加复合主键 ALTER TABLE to add a composite primary key(ALTER TABLE 添加复合主键)
                <tfoot id='2UIkq'></tfoot><i id='2UIkq'><tr id='2UIkq'><dt id='2UIkq'><q id='2UIkq'><span id='2UIkq'><b id='2UIkq'><form id='2UIkq'><ins id='2UIkq'></ins><ul id='2UIkq'></ul><sub id='2UIkq'></sub></form><legend id='2UIkq'></legend><bdo id='2UIkq'><pre id='2UIkq'><center id='2UIkq'></center></pre></bdo></b><th id='2UIkq'></th></span></q></dt></tr></i><div id='2UIkq'><tfoot id='2UIkq'></tfoot><dl id='2UIkq'><fieldset id='2UIkq'></fieldset></dl></div><q id='2UIkq'></q><small id='2UIkq'><b id='2UIkq'></b><style id='2UIkq'></style><i id='2UIkq'></i><small id='2UIkq'><dl id='2UIkq'></dl><fieldset id='2UIkq'><form id='2UIkq'><dt id='2UIkq'><code id='2UIkq'></code><code id='2UIkq'><div id='2UIkq'></div></code></dt></form></fieldset></small></small><thead id='2UIkq'><kbd id='2UIkq'></kbd><sup id='2UIkq'><th id='2UIkq'></th></sup></thead><sup id='2UIkq'><strong id='2UIkq'><i id='2UIkq'></i></strong><small id='2UIkq'><div id='2UIkq'></div></small><ins id='2UIkq'></ins></sup><legend id='2UIkq'><table id='2UIkq'></table></legend><legend id='2UIkq'><style id='2UIkq'><dir id='2UIkq'><q id='2UIkq'></q></dir></style></legend><bdo id='2UIkq'></bdo><ul id='2UIkq'></ul><strong id='2UIkq'><tr id='2UIkq'></tr></strong><label id='2UIkq'></label><strike id='2UIkq'></strike><option id='2UIkq'><u id='2UIkq'><ol id='2UIkq'><blockquote id='2UIkq'></blockquote></ol></u></option><table id='2UIkq'></table><tbody id='2UIkq'></tbody><small id='2UIkq'></small><noframes id='2UIkq'> 栏目导航 前端开发问题Java开发问题C/C++开发问题Python开发问题C#/.NET开发问题php开发问题移动开发问题数据库问题 最新文章 • 在 SQL Server 中将 Varchar 转换为... • SQL 链接服务器查询非常非常慢... • SQL Server“FOR XML"连接两个... • 在 SQL Server 中获取工作日... • 如何在 SQL Server 2016 中创建宽表?... • SQL 在两表排列中向上或向下移动行... • SQL Server BEFORE UPDATE 触发器,... • E:从ubuntu 20.04完全删除mysql时,... • 相当于 mySQL 中的 SQLServer 函数 S... • 更改“Mysql Row size too large&quo... • 使用SQL server将一个主表分成多个表... • SQL Server 将 XML 子节点附加到父节... 热门文章 • 在 SQL Server 中将 Varchar 转换为... • SQL 链接服务器查询非常非常慢... • SQL Server“FOR XML"连接两个... • 在 SQL Server 中获取工作日... • 如何在 SQL Server 2016 中创建宽表?... • SQL 在两表排列中向上或向下移动行... • SQL Server BEFORE UPDATE 触发器,... • E:从ubuntu 20.04完全删除mysql时,... • 相当于 mySQL 中的 SQLServer 函数 S... • 更改“Mysql Row size too large&quo... • 使用SQL server将一个主表分成多个表... • SQL Server 将 XML 子节点附加到父节... 热门标签 五金机械 教育培训 机械设备 环保公司 新闻资讯 服装服饰 营销型 轴承 电子元件 零部件 电子科技 电子产品 环保科技 培训机构 电子商城 双语 中英双语 织梦模板 dede 外语学校 竞价网站源码 竞价培训网 门户网站 织梦笑话网 dedecms笑话网 织梦源码 网站建设 搞笑图片 织梦教程 旅游网站源码 织梦旅游网 学校培训 html5 企业织梦源码 医院源码 后台样式 移动营销页 chatgpt 整形医院 大学医院 新手建站 客服代码 洗衣机维修 企业网站 淘宝客 导航菜单 教育网站 学校源码 装修网站 装修模板 美容整形 女性健康 妈妈网 机械源码 建站公司 珠宝首饰 苹果网站 手机资讯 管理平台 织梦模版打包 妇科源码 安卓市场源码 男性时尚网 健康之家 app应用网站 笑话网站 下载站 车辆管理系统 中医院网站 家装网站源码
                网站首页 - 免责声明- 最新公告- 充值相关 - 网站地图 Copyright © 2022-2023 深圳市沃梦达电子商务有限公司 All Rights Reserved. 粤ICP备14083021号