C. Binary String(推式子)

该博客探讨了一道编程竞赛题目,涉及字符串处理和优化策略。给定一个字符串,目标是找到最大值,即最多删除一个1或者全部删除0,求剩余部分中1和0的较大者。通过前缀和技巧,博主提出了两种情况的讨论,并给出了相应的解决方案,最终实现求解最小值的算法。

链接:Educational Codeforces Round 128 (Rated for Div. 2) - C

题意:

给定字符串s,可以从开头删去一部分,还可以从末尾删除一部分,求这个式子最小值:

max (删去的1个数,剩下的0个数)。

做法:

设剩下的子串,左端点为l,右端点为rsum[]是前缀和,意思是前缀中1的个数。

删去的1:sum[n] - (sum[r] - sum[l - 1])

剩下的0:r-l +1- (sum[r] - sum[l-1])

很显然后面那部分是相同的,所以可以分类讨论前面的式子。

sum[n]\geq r-l+1

(sum[r] - sum[l - 1]) 要最大化,且lr的距离不超过sum[n](sum[r] - sum[l - 1])的物理意义是,剩下的串中1的个数,显然lr的距离越大,这个值才会越大。

sum[n]< r-l+1

这里与上面的情况稍稍不同,要看整个式子本身了,r-l +1- (sum[r] - sum[l-1]),意义是剩下的0的个数,很明显长度越小,这个式子的值才可能越小,且长度要大于sum[n]

char s[N];
int sum[N];
void solve()
{
    scanf("%s", s + 1);
    int n = strlen(s + 1);
    for (int i = 1; i <= n; i++)
    {
        sum[i] = sum[i - 1] + s[i] - '0';
    }
    int ans = 1e18;
    int len = sum[n];
    for (int i = 1; i + len - 1 <= n; i++)
    {
        ans = min(ans, len - (sum[i + len - 1] - sum[i - 1]));
    }
    for (int i = 1; i + len <= n; i++)
    {
        ans = min(ans, len + 1 - (sum[i + len] - sum[i - 1]));
    }
    cout << ans << "\n";
}

CREATE STABLE IF NOT EXISTS battery_info ( ts TIMESTAMP, battery_voltage INT, battery_current INT, battery_soc INT, battery_work_mode NCHAR(32), battery_error_code NCHAR(50), battery_temperature_max INT, battery_temperature_min INT, battery_voltage_max INT, battery_voltage_min INT, mos_status INT, mos_temp INT, battery_cycle_times INT, longitude NCHAR(20), longitude_direction NCHAR(10), latitude NCHAR(20), latitude_direction NCHAR(10), gps_signal NCHAR(32), flag INT, handled INT, payload NCHAR(800), imei NCHAR(32), iccid NCHAR(32), battery_kind NCHAR(100), project_id INT, tracker_software_version NCHAR(32), battery_soft_version NCHAR(32) ) TAGS ( battery_id NCHAR(32) ); 这是原来的tdengine表;现在要添加private String sn; private Integer soh; private String cellVoltage; private String batteryHardVersion; private Integer batteryTemperatureAvg; private Integer chargeCurrentMax; private Integer dischargeCurrentMax; private Integer chargeCurrentAvg; private Integer dischargeCurrentAvg; private String gpsCog; private String gpsSpeed; private Date createTime; private Date updateTime;这几个字段到该tdengine表中,参照原mysql表ddl设置字段类型:-- bmsapi.my_battery_info definition CREATE TABLE `my_battery_info` ( `id` int NOT NULL AUTO_INCREMENT, `battery_id` varchar(32) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NOT NULL, `battery_voltage` int DEFAULT NULL, `battery_current` int DEFAULT NULL, `battery_soc` int DEFAULT NULL, `battery_hard_version` varchar(32) DEFAULT NULL, `battery_soft_version` varchar(32) DEFAULT NULL, `battery_work_mode` varchar(32) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci DEFAULT NULL COMMENT '0x01(1):放电模式 0x10(16):充电模式 0x21(33):保护模式 0x30(48):待机无输出模式 0x31(49):待机预放电模式 0xFF(255):故障需返厂', `battery_protect_code` varchar(32) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci DEFAULT NULL COMMENT '保护状态 bit16~bit 31 保留 bit15:Gsensor 故障 bit14:BMS 与 Tracker通讯超时 bit13: 预放电失败 bit12: IC保护 bit11: 智能充电通信超时 bit10:压差过大 bit9:温差过大 bit8:短路 bit7:充电过压 bit6:充电过流 bit5:放电欠压 bit4:放电过流 bit3:充电低温 bit2:充电高温 bit1:放电高温 bit0:放电低温', `battery_error_code` varchar(50) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci DEFAULT NULL COMMENT '转成2进制, 总共为16位,高8位为电池包工作状态,低8位为故障状态码 bit9BMS 与 Tracker通讯故障,bit8BMS 板 G sensor损坏,(8/9无效)bit7:失效,bit6:失衡,bit5:放电 MOS 损坏,bit4:充电 MOS 损坏,bit3IC 损坏,bit2:温度传感器损坏,bit1:采样线断线,虚焊等故障 保留,置 0,bit0:保留', `battery_temperature_max` int DEFAULT NULL, `battery_temperature_min` int DEFAULT NULL, `battery_voltage_max` int DEFAULT NULL, `battery_voltage_min` int DEFAULT NULL, `mos_status` int DEFAULT NULL, `mos_temp` int DEFAULT NULL, `battery_cycle_times` int DEFAULT NULL, `steady_status` int DEFAULT NULL, `cell_voltage` varchar(200) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci DEFAULT NULL, `model` varchar(32) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci DEFAULT NULL, `manufacture` varchar(32) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci DEFAULT NULL, `imei` varchar(32) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci DEFAULT NULL, `imsi` varchar(32) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci DEFAULT NULL, `iccid` varchar(32) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci DEFAULT NULL, `tracker_hardware_version` varchar(32) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci DEFAULT NULL, `tracker_software_version` varchar(32) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci DEFAULT NULL, `csq` varchar(32) DEFAULT NULL, `network_type` varchar(32) DEFAULT NULL, `location_mode` varchar(8) DEFAULT NULL, `longitude` varchar(20) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci DEFAULT NULL, `longitude_direction` varchar(10) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci DEFAULT NULL, `latitude` varchar(20) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci DEFAULT NULL, `latitude_direction` varchar(10) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci DEFAULT NULL, `gps_speed` varchar(32) DEFAULT NULL, `gps_signal` varchar(32) DEFAULT NULL, `satellite_num` varchar(32) DEFAULT NULL, `accuracy` varchar(32) DEFAULT NULL, `flag` int DEFAULT '1' COMMENT '1:设备主动请求或上报 2:平台主动送或下指令 3:平台指令反馈的结果', `client_id` varchar(20) DEFAULT NULL COMMENT 'MQTT发布消息所需的clientId', `topic` varchar(100) DEFAULT NULL COMMENT 'MQTT主题', `product_key` varchar(20) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci DEFAULT NULL COMMENT '主题名称中需要的productKey', `handled` int DEFAULT '0' COMMENT '配置是否处理 1:已处理 0:待处理', `todo_now` int DEFAULT NULL COMMENT '是否立即执行 0:等待执行 1:立即执行', `needack` tinyint DEFAULT NULL COMMENT '是否回复', `businessmode` varchar(32) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci DEFAULT NULL COMMENT '业务模式 1:关机模式 2:运营模式 3:运输模式 4:通讯充电模式 5:盲充模式 6:存储模式 7:搜寻模式 8:返厂模式', `upload_time` datetime(3) DEFAULT NULL, `create_time` datetime DEFAULT NULL, `update_time` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', `payload` varchar(800) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci DEFAULT NULL COMMENT '原始数据', `project_id` int DEFAULT NULL COMMENT '项目ID', `sn` varchar(100) DEFAULT NULL COMMENT 'sn码', `soh` int DEFAULT NULL COMMENT 'soh', `battery_temperature_avg` int DEFAULT NULL COMMENT '平均温度', `charge_mode` int DEFAULT NULL COMMENT '充电模式 1--标准充;2--快充;3--盲充;', `low_battery_warn` int DEFAULT NULL COMMENT '低电量提示 1--低电量告警', `charge_current_max` int DEFAULT NULL COMMENT '最大充电电流', `discharge_current_max` int DEFAULT NULL COMMENT '最大放电电流', `charge_current_avg` int DEFAULT NULL COMMENT '平均充电电流', `discharge_current_avg` int DEFAULT NULL COMMENT '平均放电电流', `gps_cog` varchar(32) DEFAULT NULL COMMENT 'Course Over Ground (COG)对地航向角(0~359°)', `total_charge_energy` decimal(10,1) DEFAULT NULL COMMENT '历史充电总能量', `charge_cycles_history` int DEFAULT NULL COMMENT '历史充电次数', `charge_capacity_history` decimal(10,1) DEFAULT NULL COMMENT '历史充电容量', `discharge_capacity_history` decimal(10,1) DEFAULT NULL COMMENT '历史放电容量', `ntc1` int DEFAULT NULL, `ntc2` int DEFAULT NULL, `ntc3` int DEFAULT NULL, `ntc4` int DEFAULT NULL, `tracker_communication_status` varchar(32) DEFAULT NULL, `battery_kind` varchar(100) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NOT NULL DEFAULT '2' COMMENT '电池类型: 0-运营、1-售后、2-内测、3-报废 4-其他 5-广 6-认证', `dsoc` int DEFAULT NULL, `correction_rate` int DEFAULT NULL COMMENT '修正速率', `tsoc` int DEFAULT NULL, `bsoc` int DEFAULT NULL, `fcc` int DEFAULT NULL, `actual_soh` int DEFAULT NULL COMMENT '真实soh', `charging_sop` int DEFAULT NULL COMMENT '充电sop', `discharging_sop` int DEFAULT NULL COMMENT '放电sop', `task_max_delay_1ms` int DEFAULT NULL, `task_max_delay_10ms` int DEFAULT NULL, `task_max_delay_100ms` int DEFAULT NULL, `task_max_delay_500ms` int DEFAULT NULL COMMENT '500ms任务最大延时', `task_max_time_1ms` int DEFAULT NULL, `task_max_time_10ms` int DEFAULT NULL, `task_max_time_100ms` int DEFAULT NULL, `task_max_time_500ms` int DEFAULT NULL COMMENT '500ms任务最大用时', `empty_count` int DEFAULT NULL COMMENT '未充满计数', PRIMARY KEY (`id`), KEY `battery_id` (`battery_id`) USING BTREE, KEY `my_battery_info_topic_IDX` (`topic`) USING BTREE, KEY `my_battery_info_sn_IDX` (`sn`) USING BTREE, KEY `idx_query_conditions` (`project_id`,`flag`,`battery_kind`,`upload_time` DESC), KEY `my_battery_info_flag_IDX` (`flag`,`upload_time`,`battery_id`) USING BTREE, KEY `Algorithm_Index` (`battery_id`,`battery_current`,`battery_temperature_max`,`battery_cycle_times`,`cell_voltage`,`upload_time`) USING BTREE ) ENGINE=InnoDB AUTO_INCREMENT=10523594 DEFAULT CHARSET=utf8mb3;
09-03
<think> 我们已知目标是在TDengine的超级表battery_info中添加多个字段。根据原MySQL表定义,我们需要将以下字段添加到TDengine的超级表中: sn, soh, cellVoltage, batteryHardVersion, batteryTemperatureAvg, chargeCurrentMax, dischargeCurrentMax, chargeCurrentAvg, dischargeCurrentAvg, gpsCog, gpsSpeed, createTime, updateTime 注意:TDengine的超级表修改与普通数据库不同,它不支持直接使用ALTER TABLE来添加字段(特别是TAG字段)。在TDengine中,超级表的结构修改(添加列)可以使用ALTER STABLE语句,但需要注意: 1. 可以添加普通列(数据列)和TAG列,但添加TAG列需要先创建超级表时定义好TAG,后续只能添加普通列或者修改TAG列的名字(不能修改TAG列的类型)。注意:当前版本(2.0+)支持ALTER STABLE ADD COLUMN来添加普通列,但添加TAG列需要用ALTER STABLE ADD TAG?实际上,TDengine不允许在创建超级表后添加新的TAG列,只能添加普通列。 2. 查看原超级表定义,已经有一个TAG:battery_id。现在要添加的字段中,哪些是TAG,哪些是数据列?根据原MySQL表,这些字段都是数据列(因为TAG通常是用于分组的,而这里新加的字段都是动态变化的,不适合作为TAG)。 因此,我们需要将这些新字段作为普通列(数据列)添加到超级表中。 另外,需要根据原MySQL表的字段类型来确定在TDengine中的类型。TDengine支持的数据类型包括: TIMESTAMP, INT, BIGINT, FLOAT, DOUBLE, BINARY, NCHAR等。 对比MySQL字段类型和在TDengine中的对应: - `sn`:在MySQL中是varchar(100),在TDengine中可以用NCHAR(100)或者BINARY(100)。由于是字符串,建议使用NCHAR(100)。 - `soh`:在MySQL中是int,在TDengine中可以用INT。 - `cellVoltage`:在MySQL中是varchar(200),对应字符串,使用NCHAR(200)。 - `batteryHardVersion`:varchar(32) -> NCHAR(32) - `batteryTemperatureAvg`:int -> INT - `chargeCurrentMax`:int -> INT - `dischargeCurrentMax`:int -> INT - `chargeCurrentAvg`:int -> INT - `dischargeCurrentAvg`:int -> INT - `gpsCog`:varchar(32) -> NCHAR(32) - `gpsSpeed`:varchar(32) -> NCHAR(32) - `createTime`:在MySQL中是datetime,在TDengine中,由于主时间戳是ts,这个字段可以作为额外的TIMESTAMP类型?但注意TDengine每行只能有一个时间戳(主时间戳),其他时间可以用大整数存储或者用另一个TIMESTAMP列(但这样会占用存储空间,并且查询时要注意)。不过,TDengine允许除了主时间戳外还有其他TIMESTAMP列,但查询时需要注意。或者我们可以将其存储为BIGINT(毫秒时间戳)或者NCHAR(字符串)?根据原超级表,已经有一个ts作为主时间戳,所以这里建议: - 如果createTime是用来记录数据生成时间,那么可能和ts重复?如果业务上需要保留两个时间,可以将其存储为TIMESTAMP类型(这样会占用8字节,和主时间戳一样)。 - 原超级表中已经有了一个ts,所以这里我们可以将createTime和updateTime都设为TIMESTAMP类型。但是注意,TDengine中每行数据必须有一个主时间戳(且非空),而其他TIMESTAMP列可以为空。 然而,在TDengine中,一个表可以有多个TIMESTAMP列,但是只有一个作为主键(在创建表时指定的)。在超级表中,主时间戳是固定的。所以我们添加的createTime和updateTime只能是普通的数据列,类型为TIMESTAMP。 但是,注意:TDengine中,TIMESTAMP类型是8字节的长整型,表示从1970-01-01 00:00:00.000 (UTC/GMT)开始的微秒数(或者毫秒数,取决于数据库配置,默认为毫秒)。而MySQL的datetime精确到秒或更小(这里createTime是datetime,精确到秒;updateTime也是datetime,精确到秒)。所以我们可以直接使用TIMESTAMP类型。 但是,在TDengine中,TIMESTAMP列不能作为主键,并且除了主时间戳列外,其他TIMESTAMP列不会建立索引。所以,如果这两个时间字段只是用于记录,那么可以存储为TIMESTAMP。 另外,原超级表已经有一个名为`ts`的TIMESTAMP列(主时间戳),所以我们要添加的createTime和updateTime是额外的TIMESTAMP列。 因此,添加字段的语句如下(使用ALTER STABLE ... ADD COLUMN): 注意:TDengine的ALTER STABLE语句允许一次添加多个列,但需要分开写多个ADD COLUMN(或者可以写在一个ALTER STABLE中,用逗号分隔多个ADD COLUMN)。 但是,请注意:TDengine版本要求。在2.0.8.0之后支持ALTER STABLE添加列。 具体语句: ```sql ALTER STABLE battery_info ADD COLUMN sn NCHAR(100); ALTER STABLE battery_info ADD COLUMN soh INT; ALTER STABLE battery_info ADD COLUMN cellVoltage NCHAR(200); ALTER STABLE battery_info ADD COLUMN batteryHardVersion NCHAR(32); ALTER STABLE battery_info ADD COLUMN batteryTemperatureAvg INT; ALTER STABLE battery_info ADD COLUMN chargeCurrentMax INT; ALTER STABLE battery_info ADD COLUMN dischargeCurrentMax INT; ALTER STABLE battery_info ADD COLUMN chargeCurrentAvg INT; ALTER STABLE battery_info ADD COLUMN dischargeCurrentAvg INT; ALTER STABLE battery_info ADD COLUMN gpsCog NCHAR(32); ALTER STABLE battery_info ADD COLUMN gpsSpeed NCHAR(32); ALTER STABLE battery_info ADD COLUMN createTime TIMESTAMP; ALTER STABLE battery_info ADD COLUMN updateTime TIMESTAMP; ``` 另外,原超级表中已经存在的一些字段,在MySQL中也有对应,但我们在创建超级表时可能使用了不同的命名(比如在TDengine中用的是battery_error_code,而MySQL中还有battery_protect_code等)。但是本次添加的字段是新的,不会冲突。 但是,注意:在TDengine中,列名是大小写不敏感的,都会转为小写。而原超级表中的字段都是小写,所以我们在添加时也使用小写。但是原需求中给出的字段名是驼峰式,我们需要统一吗? 根据原超级表定义,字段名使用小写和下划线(如battery_voltage)。但这里给出的字段名是驼峰(如batteryTemperatureAvg)。为了保持统一,建议使用下划线命名法(snake_case)?或者保持原样(驼峰)?注意TDengine会将列名转为小写,所以无论输入是大写还是驼峰,存储的列名都是小写。因此,如果我们使用驼峰式,在TDengine中会变成全小写。例如:`batteryTemperatureAvg` 在TDengine中会变成 `batterytemperatureavg`,这样可读性差且与原有风格不一致。 因此,建议使用下划线命名法,与原有超级表保持一致。修改字段名为: sn -> sn (已经是小写,可以) soh -> soh cellVoltage -> cell_voltage batteryHardVersion -> battery_hard_version batteryTemperatureAvg -> battery_temperature_avg chargeCurrentMax -> charge_current_max dischargeCurrentMax -> discharge_current_max chargeCurrentAvg -> charge_current_avg dischargeCurrentAvg -> discharge_current_avg gpsCog -> gps_cog gpsSpeed -> gps_speed createTime -> create_time updateTime -> update_time 所以,修改后的SQL语句为: ```sql ALTER STABLE battery_info ADD COLUMN sn NCHAR(100); ALTER STABLE battery_info ADD COLUMN soh INT; ALTER STABLE battery_info ADD COLUMN cell_voltage NCHAR(200); ALTER STABLE battery_info ADD COLUMN battery_hard_version NCHAR(32); ALTER STABLE battery_info ADD COLUMN battery_temperature_avg INT; ALTER STABLE battery_info ADD COLUMN charge_current_max INT; ALTER STABLE battery_info ADD COLUMN discharge_current_max INT; ALTER STABLE battery_info ADD COLUMN charge_current_avg INT; ALTER STABLE battery_info ADD COLUMN discharge_current_avg INT; ALTER STABLE battery_info ADD COLUMN gps_cog NCHAR(32); ALTER STABLE battery_info ADD COLUMN gps_speed NCHAR(32); ALTER STABLE battery_info ADD COLUMN create_time TIMESTAMP; ALTER STABLE battery_info ADD COLUMN update_time TIMESTAMP; ``` 注意:这些ALTER语句需要逐条执行,或者可以合并为一个语句(TDengine支持在一条ALTER STABLE语句中执行多个ADD COLUMN操作,用逗号分隔): ```sql ALTER STABLE battery_info ADD COLUMN sn NCHAR(100), ADD COLUMN soh INT, ADD COLUMN cell_voltage NCHAR(200), ADD COLUMN battery_hard_version NCHAR(32), ADD COLUMN battery_temperature_avg INT, ADD COLUMN charge_current_max INT, ADD COLUMN discharge_current_max INT, ADD COLUMN charge_current_avg INT, ADD COLUMN discharge_current_avg INT, ADD COLUMN gps_cog NCHAR(32), ADD COLUMN gps_speed NCHAR(32), ADD COLUMN create_time TIMESTAMP, ADD COLUMN update_time TIMESTAMP; ``` 这样只需执行一次。 但是,请注意:在TDengine中,超级表结构修改后,子表的结构不会立即改变。当子表有新的数据插入时,会自动应用新的结构。如果子表在修改超级表结构之前已经创建,那么对于新增加的列,在插入数据时如果不指定,则为NULL。而且,TDengine不支持删除列,所以添加列时要谨慎。 另外,在添加列之后,查询子表时可以看到新添加的列。 因此,最终解决方案就是执行上述ALTER STABLE语句。 注意:生产环境执行前请备份数据,并在测试环境验证。 另外,原MySQL表中还有其他字段(如battery_hard_version)在TDengine的超级表中已经存在吗?查看原TDengine超级表定义,已经有一个battery_soft_version,但是没有battery_hard_version,所以这个字段是新增的。 但是,我们发现原TDengine超级表已经定义了battery_soft_version,所以这里新增的battery_hard_version是新的,没有问题。 所以,按照上述SQL语句执行即可。 </think> 根据 MySQL 表定义,需要为 TDengine 超级表 `battery_info` 添加以下字段。TDengine 不支持直接修改 TAG 列,所有新增字段应作为普通数据列(非 TAG 列)添加。 ### 解决方案代码 ```sql ALTER STABLE battery_info ADD COLUMN sn NCHAR(100), ADD COLUMN soh INT, ADD COLUMN cell_voltage NCHAR(200), ADD COLUMN battery_hard_version NCHAR(32), ADD COLUMN battery_temperature_avg INT, ADD COLUMN charge_current_max INT, ADD COLUMN discharge_current_max INT, ADD COLUMN charge_current_avg INT, ADD COLUMN discharge_current_avg INT, ADD COLUMN gps_cog NCHAR(32), ADD COLUMN gps_speed NCHAR(32), ADD COLUMN create_time TIMESTAMP, ADD COLUMN update_time TIMESTAMP; ``` ### 代码解释 1. **字段类型映射**: - `VARCHAR` → `NCHAR`(TDengine 的字符串类型) - `INT` → `INT`(直接对应) - `DATETIME` → `TIMESTAMP`(时间类型) - 字段名统一转为 snake_case(小写+下划线) 2. **字段对照表**: | MySQL 字段名 | TDengine 字段名 | 类型 | 长度 | |-----------------------|-------------------------------|--------------|------| | sn | sn | NCHAR | 100 | | soh | soh | INT | - | | cellVoltage | cell_voltage | NCHAR | 200 | | batteryHardVersion | battery_hard_version | NCHAR | 32 | | batteryTemperatureAvg | battery_temperature_avg | INT | - | | chargeCurrentMax | charge_current_max | INT | - | | dischargeCurrentMax | discharge_current_max | INT | - | | chargeCurrentAvg | charge_current_avg | INT | - | | dischargeCurrentAvg | discharge_current_avg | INT | - | | gpsCog | gps_cog | NCHAR | 32 | | gpsSpeed | gps_speed | NCHAR | 32 | | createTime | create_time | TIMESTAMP | - | | updateTime | update_time | TIMESTAMP | - | 3. **关键注意事项**: - 所有新增字段均为普通数据列(非 TAG 列) - `TIMESTAMP` 列不占用主时间戳位置(原 `ts` 列仍是主时间戳) - 修改超级表后,**已有子表自动继承新结构**(无需重建子表) - 新增字段在历史数据中显示为 `NULL` ### 执行后验证 ```sql DESCRIBE battery_info; ``` 输出应包含新增的 12 个字段,位置在原有数据列之后、TAG 列之前。 ### 注意事项 1. 生产环境操作前务必**备份数据** 2. TDengine 2.4+ 版本支持此语法(低版本需升级) 3. 若需处理历史数据填充默认值,需手动执行 `UPDATE`
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值