MySQL操纵视图数据

问题描述

我正在读取一个视图,该视图提供了如下数据:

msn       | global_device_id | meter_datetime        | interval| channel_id | active_energy_pos_t1     
==================================================================================================
3798000021| 980021           | 2020-07-29 16:45:00   | 15      | 1          | 72.80300
3798000021| 980021           | 2020-07-29 17:00:00   | 15      | 1          | 72.80300
3798000021| 980021           | 2020-07-29 17:15:00   | 15      | 1          | 72.80300
3798000021| 980021           | 2020-07-29 17:30:00   | 15      | 1          | 72.80300
....

每条记录的channel_id1。我要操纵它。我想对上述数据3 copies进行精确的virtually的处理,1st数据应将channel_id设置为1,第二个数据应将channel_id设置为{ {1}}和第三者应具有2作为channel_id,如下所示

3

视图名称为msn | global_device_id | meter_datetime | interval| channel_id | active_energy_pos_t1 ================================================================================================== 3798000021| 980021 | 2020-07-29 16:45:00 | 15 | 1 | 72.80300 3798000021| 980021 | 2020-07-29 17:00:00 | 15 | 1 | 72.80300 3798000021| 980021 | 2020-07-29 17:15:00 | 15 | 1 | 72.80300 3798000021| 980021 | 2020-07-29 17:30:00 | 15 | 1 | 72.80300 3798000021| 980021 | 2020-07-29 16:45:00 | 15 | 2 | 72.80300 3798000021| 980021 | 2020-07-29 17:00:00 | 15 | 2 | 72.80300 3798000021| 980021 | 2020-07-29 17:15:00 | 15 | 2 | 72.80300 3798000021| 980021 | 2020-07-29 17:30:00 | 15 | 2 | 72.80300 3798000021| 980021 | 2020-07-29 16:45:00 | 15 | 3 | 72.80300 3798000021| 980021 | 2020-07-29 17:00:00 | 15 | 3 | 72.80300 3798000021| 980021 | 2020-07-29 17:15:00 | 15 | 3 | 72.80300 3798000021| 980021 | 2020-07-29 17:30:00 | 15 | 3 | 72.80300 .... 。我该怎么办?

解决方法

您可以使用固定值列表交叉连接视图:

select l.msn,l.global_device_id,l.meter_datetime,l.interval,c.channel_id,l.active_energy_pos_t1
from load_profile_data l
cross join (select 1 channel_id union all select 2 union all select 3) c
,

一种方法使用联合:

ProtoReader

旁注:SELECT msn,global_device_id,meter_datetime,`interval`,channel_id,active_energy_pos_t1 FROM load_profile_data UNION ALL SELECT msn,2,3,active_energy_pos_t1 FROM load_profile_data; 是MySQL中的保留关键字。在上面的查询中,我躲在反引号中,但通常应该避免使用保留的关键字来命名数据库对象。

,

尝试联合:

select msn,meter_datetime . interval,active_energy_pos_t1 from load_profile_data

union

select msn,channel_id +1,channel_id+2,active_energy_pos_t1 from load_profile_data

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...