mysql - mysql join 每日和每周数据
问题描述
我尝试从两个表中选择数据并将其与 update_date 一起作为连接元素。我的问题:一张表有每日数据,另一张表有每周数据。如果我使用 LEFT JOIN,它会正确显示两个表中的数据 - 但只显示每周的数据。我想显示所有每日数据以及相应日期的每周数据。到目前为止,这是我的代码:
$query = "SELECT * FROM `table1`
LEFT JOIN `table2`
ON `table1`.`update_date` = `table2`.`update_date`
WHERE `table1`.`market_id` = '10'
AND `table1`.`act_contract` = 'act'
AND `table2`.`market_id` = '10'
";
下图显示了从两个表中选择的内容,以使我的问题更容易理解。我想从两个表中选择所有条目,由 update_date 连接。如果我没有来自表 2 的结果,则查询应该显示来自 table1 的 update_date 和 sett 的条目,并且还将 comshort 显示为 NULL。
这是我创建的表:
CREATE TABLE `table1` (
`price_ID` int(11) NOT NULL,
`update_date` varchar(45) DEFAULT NULL,
`contract_id` varchar(45) DEFAULT NULL,
`market_id` varchar(45) DEFAULT NULL,
`open` varchar(45) DEFAULT NULL,
`high` varchar(45) DEFAULT NULL,
`low` varchar(45) DEFAULT NULL,
`close` varchar(45) DEFAULT NULL,
`sett` varchar(45) DEFAULT NULL,
`est_volume` int(11) DEFAULT NULL,
`prior_volume` varchar(45) DEFAULT NULL,
`prior_open_int` varchar(45) DEFAULT NULL,
`act_contract` varchar(45) DEFAULT NULL
ALTER TABLE `table1`
ADD PRIMARY KEY (`price_ID`);
第二个:
CREATE TABLE `table2` (
`ID` int(11) NOT NULL,
`comlong` int(11) DEFAULT NULL,
`comshort` int(11) DEFAULT NULL,
`update_date` date DEFAULT NULL,
`market_id` int(11) DEFAULT NULL,
`openinterest` int(11) DEFAULT NULL
ALTER TABLE `cot-data`
ADD PRIMARY KEY (`ID`);
解决方案
解决方案是子选择。
SELECT *,
(select comshort from `table2` where market_id=table1.market_id and update_date=table1.update_date)
FROM `table1` WHERE `act_contract` = 'act' AND `market_id`= '10'
推荐阅读
- ios - 存储 AWS S3 视频以在 iOS 移动应用程序中离线查看
- ruby-on-rails - 用户必须存在错误 ruby 用户 ID 无法识别
- linux - 如何以每秒字节数获取机器网络 IO?
- python - Crontab python3-selenium 未运行作业:
- html - HTML的验证模式有什么区别?
- python - 根据现有列分配真/假条件
- r - 仅使用数字的堆积条形图
- json - JSONata:提取最小/最大温度,包括时间戳
- javascript - Vue:在选择下拉列表中有一个 v-model 会清除其他输入值
- javascript - 当我想使用纱线时出错