Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/60.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何从更新表中获取最新状态,并将其与MySQL中的详细信息表连接起来?_Mysql_Sql_Sqlalchemy - Fatal编程技术网

如何从更新表中获取最新状态,并将其与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');