假设前端需要的数据是这样的:
那我在MySQL中的存储方案应该怎样设置。
如果只是存日期,属性,数值这3个字段,sql语句一直写不出来。
重点是增减字段需要程序查询运算得出。
还请大牛指教存储方案。感激不尽...
日期,属性,数值,增减这四个字段就行,每次写入时,把对应的前一笔记录查出来,计算本次的增减值,再写入
-- MySQL
-- 假如表结构如下
CREATE TABLE `t_demo` (
`id` bigint(20) NOT NULL AUTO_INCREMENT,
`create_date` date DEFAULT NULL COMMENT '日期',
`attr` varchar(64) DEFAULT NULL COMMENT '属性',
`attr_value` int(11) DEFAULT NULL COMMENT '值',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='示例表';
-- 查询语句
SELECT
t.*,
( t.attr_value - t2.attr_value ) AS diff
FROM
t_demo t
LEFT JOIN t_demo t2 ON t2.attr = t.attr
AND t2.create_date = date_sub( t.create_date, INTERVAL 1 DAY )
ORDER BY
t.create_date,
t.attr;
结果示例:
这是个不错的解决方案,逻辑简单,易理解,我也是这么想的,如果不在意时间,在意空间,似乎就不太得行了。