如何从更新表中获取最新状态,并将其与MySQL中的详细信息表连接起来?
我使用的两个表是:如何从更新表中获取最新状态,并将其与MySQL中的详细信息表连接起来?,mysql,sql,sqlalchemy,Mysql,Sql,Sqlalchemy,我使用的两个表是: CREATE TABLE `UPDATE_TABLE` ( `DETAIL_ID` VARCHAR(10), `UPDATE_ID` VARCHAR(10) NOT NULL, `STATUS` ENUM('COMPLETE','INCOMPLETE') NOT NULL, `UPDATED_ON` DATETIME NOT NULL, PRIMARY KEY (`UPDATE_ID`), FOREIGN KEY(`D
CREATE TABLE `UPDATE_TABLE` (
`DETAIL_ID` VARCHAR(10),
`UPDATE_ID` VARCHAR(10) NOT NULL,
`STATUS` ENUM('COMPLETE','INCOMPLETE') NOT NULL,
`UPDATED_ON` DATETIME NOT NULL,
PRIMARY KEY (`UPDATE_ID`),
FOREIGN KEY(`DETAIL_ID`) REFERENCES `TASK_DETAIL` (`DETAIL_ID`)
);
CREATE TABLE `DETAIL_TABLE` (
`DETAIL_ID` VARCHAR(10) NOT NULL,
`NAME` VARCHAR(50),
);
我需要详细信息:详细信息ID,姓名,状态最新,在我的最终结果中更新。
我目前正在做的是:
从更新表t中选择t.*,其中在中更新了
从按详细信息\u ID更新\u表组中选择MaxUpdate\u ON作为最新的\u更新
获取最新更新的详细信息,并在detail_表上执行左连接
但当多个详细信息ID上有相同的更新内容时,问题就来了。
例如:
所以这给了我2个细节的更新。
我只需要最新的更新
SQLAlchemy查询将是一个巨大的奖励 您可以尝试以下SQL查询以获得所需的结果: 选择distinctut.DETAIL\u ID、dt.NAME、ut.STATUS、ut.UPDATED\u ON 从更新表ut,详细信息表dt 其中ut.DETAIL\u ID=dt.DETAIL\u ID
和ut.UPDATED_ON=从UPDATE_表中选择MAXUPDATED_ON,其中DETAIL_ID=ut.DETAIL_ID 如果UPDATE_表上的UPDATED_ON字段对于1个DETAIL_ID从来没有相同的值,那么这应该适用于您的情况
CREATE TABLE `UPDATE_TABLE` (
`DETAIL_ID` VARCHAR(10),
`UPDATE_ID` VARCHAR(10) NOT NULL,
`STATUS` ENUM('COMPLETE','INCOMPLETE') NOT NULL,
`UPDATED_ON` DATETIME NOT NULL,
PRIMARY KEY (`UPDATE_ID`)
);
Insert into `UPDATE_TABLE` values('100','1','INCOMPLETE','2021-04-03 17:03:34');
Insert into `UPDATE_TABLE` values('200','2','INCOMPLETE','2021-04-03 17:03:34');
Insert into `UPDATE_TABLE` values('300','3','INCOMPLETE','2021-04-03 17:03:34');
Insert into `UPDATE_TABLE` values('200','4','COMPLETE','2021-04-04 11:50:41');
详细信息
更新\u ID
地位
更新
100
1.
残缺的
2021-04-03 17:03:34
200
2.
残缺的
2021-04-03 17:03:34
300
3.
残缺的
2021-04-03 17:03:34
200
4.
完成
2021-04-04 11:50:41
如果日期/时间列具有相同的值,如何定义最新更新?请记住:SQL表是无序的。作为进一步的混淆,您将第一列定义为主键,但示例中的第一列有重复项。这正是无法为我提供正确输出的原因,因为对于detail_id=200,我得到了两种状态,因为MaxUPDATED_ON=2021-04-03 17:03:34以及2021-04-04 11:50:41我稍微更新了查询。至于获取2个状态,我在子查询中添加了一个where子句,它将始终返回每个特定细节ID的max UPDATED_ON值。
CREATE TABLE `UPDATE_TABLE` (
`DETAIL_ID` VARCHAR(10),
`UPDATE_ID` VARCHAR(10) NOT NULL,
`STATUS` ENUM('COMPLETE','INCOMPLETE') NOT NULL,
`UPDATED_ON` DATETIME NOT NULL,
PRIMARY KEY (`UPDATE_ID`)
);
Insert into `UPDATE_TABLE` values('100','1','INCOMPLETE','2021-04-03 17:03:34');
Insert into `UPDATE_TABLE` values('200','2','INCOMPLETE','2021-04-03 17:03:34');
Insert into `UPDATE_TABLE` values('300','3','INCOMPLETE','2021-04-03 17:03:34');
Insert into `UPDATE_TABLE` values('200','4','COMPLETE','2021-04-04 11:50:41');