AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / dba / 问题 / 287120
Accepted
Mihai Cristian
Mihai Cristian
Asked: 2021-03-17 04:19:01 +0800 CST2021-03-17 04:19:01 +0800 CST 2021-03-17 04:19:01 +0800 CST

如何按 id 为表中的每个值选择数据大小组

  • 772

我希望我能准确地解释我需要得到什么。

我有一个具有 MEDIUMBLOB 类型的特定列的表。我需要做的是确定插入到此列中的每个值的大小,按 idMsg 分组,并将此值转换为 MB。

数据库结构是:

CREATE TABLE `sat_msgBlob` (
    `idOwnApp` MEDIUMINT(11) NOT NULL DEFAULT '0',
    `idMsg` BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT,
    `idVeh` MEDIUMINT(11) NULL DEFAULT NULL,
    `idTypeMsg` MEDIUMINT(11) NULL DEFAULT NULL,
    `idProviderComm` MEDIUMINT(11) NULL DEFAULT NULL,
    `idPayCode` MEDIUMINT(11) NULL DEFAULT NULL,
    `msgInOut` CHAR(1) NULL DEFAULT NULL COLLATE 'utf8_general_ci',
    `idMsgSender` VARCHAR(255) NULL DEFAULT NULL COLLATE 'utf8_general_ci',
    `txMsg` VARCHAR(255) NULL DEFAULT NULL COLLATE 'utf8_general_ci',
    `tmMsg` DATETIME NOT NULL DEFAULT '0000-00-00 00:00:00',
    `idControl` MEDIUMINT(11) NOT NULL DEFAULT '0',
    `txBlob` MEDIUMBLOB NULL DEFAULT NULL,
    `idUpdUser` MEDIUMINT(11) NULL DEFAULT NULL,
    `tmUpdate` DATETIME NULL DEFAULT NULL,
    `idMission` MEDIUMINT(11) NULL DEFAULT NULL,
    `idEvent` MEDIUMINT(11) NULL DEFAULT NULL,
    `tmPrcsLast` DATETIME NULL DEFAULT NULL,
    `idBlob` VARCHAR(250) NULL DEFAULT NULL COLLATE 'utf8_general_ci',
    PRIMARY KEY (`idMsg`, `tmMsg`) USING BTREE,
    INDEX `X2` (`idVeh`, `idOwnApp`, `tmMsg`) USING BTREE,
    INDEX `m1` (`idMission`, `idEvent`) USING BTREE,
    INDEX `X3` (`idControl`) USING BTREE,
    INDEX `X4` (`tmMsg`) USING BTREE,
    INDEX `X6` (`idBlob`) USING BTREE,
    INDEX `X7` (`tmUpdate`) USING BTREE
)
COLLATE='utf8_general_ci'
AUTO_INCREMENT=971935070
AVG_ROW_LENGTH=8450
MAX_ROWS=4294967295;

在这个 txBlob 列中插入的数据如下所示

0x3C3F786D6C2076657273696F6E3D22312E302220656E636F64696E673D225554462D38223F3E0A3C21444F435459504520566D4D4C2053595354454D2022687474703A2F2F7777772E766961747261636B2E726F2F737065632F566D4D4C5F76302E312E6474

我曾尝试使用此查询,但我不确定该值是否正确:

SELECT sys.format_bytes(LENGTH(txBlob)) AS size 
FROM sat_msgBlob 
WHERE tmMsg BETWEEN '2021-03-01' AND '2021-03-02' 
GROUP BY idMsg
mysql-5.7 percona-server
  • 2 2 个回答
  • 15 Views

2 个回答

  • Voted
  1. Best Answer
    Akina
    2021-03-17T04:41:47+08:002021-03-17T04:41:47+08:00

    看来你需要在

    SELECT idMsg, SUM(LENGTH(txBlob)) AS total_size_in_bytes
    FROM sat_msgBlob 
    WHERE tmMsg BETWEEN '2021-03-01' AND '2021-03-02' 
    GROUP BY idMsg
    

    然后,在将输出接收到客户端后,您可以将其格式化为 Mbytes。或者将查询中的总和除以 1048576 并使用所需的小数部分长度转换为十进制。

    • 1
  2. Mihai Cristian
    2021-03-19T03:45:10+08:002021-03-19T03:45:10+08:00

    我想我找到了正确的查询:

    SELECT idMsg, CONCAT( ROUND( SUM(OCTET_LENGTH(txBlob)/1024), 2 ), ' KB' ) AS KB_size, tmMsg FROM sat_msgBlob WHERE tmMsg BETWEEN '2021-03-16' AND '2021-03-17' GROUP BY idMsg
    ORDER BY KB_size
    

    谢谢!

    • 0

相关问题

  • mysql-community-server 和 mysql-community-server-minimal 有什么区别?

  • 通过 PHP 连接到 MySQL 失败,而命令行工作正常

  • Percona Server 5.6.19 中的段错误

  • MySQL:mysqld_safe 选项

  • 有什么理由不使用 Percona 'innodb_fast_checksum' 吗?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    连接到 PostgreSQL 服务器:致命:主机没有 pg_hba.conf 条目

    • 12 个回答
  • Marko Smith

    如何让sqlplus的输出出现在一行中?

    • 3 个回答
  • Marko Smith

    选择具有最大日期或最晚日期的日期

    • 3 个回答
  • Marko Smith

    如何列出 PostgreSQL 中的所有模式?

    • 4 个回答
  • Marko Smith

    列出指定表的所有列

    • 5 个回答
  • Marko Smith

    如何在不修改我自己的 tnsnames.ora 的情况下使用 sqlplus 连接到位于另一台主机上的 Oracle 数据库

    • 4 个回答
  • Marko Smith

    你如何mysqldump特定的表?

    • 4 个回答
  • Marko Smith

    使用 psql 列出数据库权限

    • 10 个回答
  • Marko Smith

    如何从 PostgreSQL 中的选择查询中将值插入表中?

    • 4 个回答
  • Marko Smith

    如何使用 psql 列出所有数据库和表?

    • 7 个回答
  • Martin Hope
    Jin 连接到 PostgreSQL 服务器:致命:主机没有 pg_hba.conf 条目 2014-12-02 02:54:58 +0800 CST
  • Martin Hope
    Stéphane 如何列出 PostgreSQL 中的所有模式? 2013-04-16 11:19:16 +0800 CST
  • Martin Hope
    Mike Walsh 为什么事务日志不断增长或空间不足? 2012-12-05 18:11:22 +0800 CST
  • Martin Hope
    Stephane Rolland 列出指定表的所有列 2012-08-14 04:44:44 +0800 CST
  • Martin Hope
    haxney MySQL 能否合理地对数十亿行执行查询? 2012-07-03 11:36:13 +0800 CST
  • Martin Hope
    qazwsx 如何监控大型 .sql 文件的导入进度? 2012-05-03 08:54:41 +0800 CST
  • Martin Hope
    markdorison 你如何mysqldump特定的表? 2011-12-17 12:39:37 +0800 CST
  • Martin Hope
    Jonas 如何使用 psql 对 SQL 查询进行计时? 2011-06-04 02:22:54 +0800 CST
  • Martin Hope
    Jonas 如何从 PostgreSQL 中的选择查询中将值插入表中? 2011-05-28 00:33:05 +0800 CST
  • Martin Hope
    Jonas 如何使用 psql 列出所有数据库和表? 2011-02-18 00:45:49 +0800 CST

热门标签

sql-server mysql postgresql sql-server-2014 sql-server-2016 oracle sql-server-2008 database-design query-performance sql-server-2017

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve