gpt4 book ai didi

Mysql获取状态的最新行

转载 作者:行者123 更新时间:2023-11-30 23:07:48 24 4
gpt4 key购买 nike

我有一个包含多个状态的日志表。它记录物理对象在外部系统中的位置。我想获取每个不同物理对象状态的最新行。

我需要一个 typeid 列表及其每个状态的数量,减去具有另一个状态条目的 typeid 的数量,该状态晚于我们正在查找的状态行。

例如,每个状态移动都被记录下来,但没有别的。

这就是问题所在,我没有为每个物理对象设置不同的 ID。我只能从日志表的状态计算出有多少。

我试过了

    SELECT dl.id, dl.status
FROM `log` AS dl
INNER JOIN (
SELECT MAX( `date` ) , id
FROM `log`
GROUP BY id ORDER BY `date` DESC
) AS dl2
WHERE dl.id = dl2.id

但这需要一个不同的类型 ID 才能工作。

我的表有一个主键 id、datetime、status、product type_id。有四种不同的状态。

产品必须通过所有状态。

示例数据。

date       typeid status    id

2014-01-13 PF0180 shopfloor 71941
2014-01-13 ND0355 shopfloor 71940
2014-01-10 ND0355 machine 71938
2014-01-10 ND0355 machine 71937
2014-01-10 ND0282 machine 7193

当我想要的状态车间选择结果时

quantity typeid
1 ND0355
1 PF0180

在选择状态机时我想要

quantity typeid
1 ND0282
1 ND0355

状态的顺序无关紧要,只有在产品有较晚的条目时才重要。

最佳答案

如果我理解正确,这将为您提供所需的输出:

select
l1.typeid,
l1.status,
count(1) - (
select count(1)
from log l2
where l2.typeid = l1.typeid and
l2.date > l1.date
)
from log l1
group by l1.typeid, l1.status;

检查这个SQL Fiddle

TYPEID  STATUS      TOTAL
-----------------------------
ND0282 machine 1
ND0355 machine 1
ND0355 shopfloor 1
PF0180 shopfloor 1

关于Mysql获取状态的最新行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21093266/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com