我在 MySQL 数据库中tableStatus
有 76869 行的表。
这 76869 行是每个element
和的历史记录Code node
。
在历史上,单曲element
和Code node
可以改变他的status
传球,从status
AVAILABLE到UNAVAILABLE,反之亦然。
这是一个例子:
mysql> SELECT
sis,
element,
`Code node`,
MAX(Datetime),
Status
FROM
`tableStatus`
GROUP BY
element,
Status
ORDER BY
MAX(Datetime) DESC;
+------+-------------------+---------------+---------------------+------------------+
| sis | element | Code node | MAX(Datetime) | Status |
+------+-------------------+---------------+---------------------+------------------+
| 7605 | ZZ190923:TT214364 | 7605-2-190923 | 2019-01-22 09:02:47 | AVAILABLE |
| 7604 | ZZ190923:ZZ394525 | 7605-2-190923 | 2019-01-22 09:02:43 | AVAILABLE |
| 7145 | ZZ073097:TT070936 | 7605-2-190923 | 2018-12-19 15:16:23 | UNAVAILABLE |
| 7144 | ZZ073097:ZZ072998 | 7605-2-190923 | 2018-12-19 15:16:20 | UNAVAILABLE |
+------+-------------------+---------------+---------------------+------------------+
4 rows in set
我需要提取最后位置状态,只有当status
是UNAVAILABLE每个element
和Code node
。
我曾尝试用WHERE status
是UNAVAILABLE,但输出是错误的,因为最后的位置status
在Code node
“7605-2-190923”是可用,不应该被提取。
mysql> SELECT
sis,
element,
`Code node`,
MAX(Datetime),
Status
FROM
`tableStatus`
WHERE
`Code node` IN ('7605-2-190923')
AND Status IN ('UNAVAILABLE')
GROUP BY
element,
Status
ORDER BY
MAX(Datetime) DESC;
+------+-------------------+---------------+---------------------+------------------+
| sis | element | Code node | MAX(Datetime) | Status |
+------+--- ---------------+---------------+---------------------+------------------+
| 7145 | ZZ073097:TT070936 | 7605-2-190923 | 2018-12-19 15:16:23 | UNAVAILABLE |
| 7144 | ZZ073097:ZZ072998 | 7605-2-190923 | 2018-12-19 15:16:20 | UNAVAILABLE |
+------+-------------------+---------------+---------------------+------------------+
2 rows in set
你能帮助我吗 ?
SELECT
*
FROM
`tableStatus` A
INNER JOIN
(
SELECT
`Code node`, MAX(Datetime) LastDatetimeForNode
FROM
tableStatus
GROUP BY `Code node`
) B ON A.`Code node` = B.`Code node` AND A.`Datetime` = B.`LastDatetimeForNode`
WHERE A.`Status` = 'UNAVAILABLE'
;
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句