sql - 我正在制作一个 SQLite 数据库,但我有许多类似的表 - 有没有办法将它们组合起来?
问题描述
所以我试图在游戏中的“股票市场”上存储产品的价格和数量信息,可用的数据是当前的买入价、卖出价、最近 7 天卖出的物品数量以及物品数量最近7天买的。
现在,我有一张过去 24 小时内的购买价格表,其中包含列(时间、项目 1、项目 2、项目 3 ......),在每一行中,有一个时间戳,然后是每个项目的价格那时。
然后,我有一个几乎相同的销售价格、购买量和销售量表(意思是,列名相同,但存储的数据不同)。
要重新创建表:
CREATE TABLE buy_prices (
time INTEGER NOT NULL,
item1 INTEGER NOT NULL DEFAULT 0,
item2 INTEGER NOT NULL DEFAULT 0,
...
itemN INTEGER NOT NULL DEFAULT 0
);
对表 sell_prices、buy_volume 和 sell_volume 重复
在设定的时间间隔内,表 buy_prices 更新为
INSERT INTO buy_prices(time, item1, item2, ... itemN)
VALUES (api_response['lastUpdated'], api_response['item1']['buy'], api_response['item2']['buy'], ... api_response['itemN']['buy']);
然后对于 sell_prices、buy_volume、sell_volume 类似(对于 api 响应使用不同的键)
这是我第一次创建数据库,所以我觉得我遗漏了一些非常明显的东西,但是有没有办法将所有这些组合到一个表中?在我的脑海中,我在想像字典之类的东西,每个单元格将存储所有 4 个值,但我不知道这是否可能,也不知道这是否合理。
tl;博士我应该有很多类似的表格,还是每个单元格中有很多值的解决方案?
解决方案
您可以使用 UNION 或 UNION ALL 语句来合并这些表。UNION 运算符删除消除重复行,而 UNION ALL 运算符则不会。
with merged_table as(
select field1, field2, field3...., fieldn
from tablename1
union
select field1, field2, field3...., fieldn
from tablename2 )
select * from merged_table;
您应该从 table1 和 table2 中以相同的顺序选择字段...
推荐阅读
- javascript - 从ajax分配javascript类中的字段
- python - Mnist 与 Tensorflow Premade Estimator,评估时输入尺寸不匹配
- tensorflow - Keras layer.weights 和 layer.get_weights() 给出不同的值
- javascript - 查询 SELECT * AS 不工作
- android - 自定义吐司不显示消息
- windows - 如何使用 plink 进行无密码登录?
- django - 使用 DRF 缓存 ViewSet:TypeError: _wrapped_view()
- node.js - Node.js - 有没有办法为生产和开发目的设置“apn”模块?
- php - 一个奏鸣曲列表视图上的“访问被拒绝”,但另一个没有
- spring-mvc - 在Tomcat中部署spring应用程序war文件后出现404发现错误