mysql - 相关子查询(在同一个表上)

标签 mysql correlated-subquery

我有一个表可以跟上房间中设备状态的变化,并且需要编写一个查询来列出自上次状态更改以来的时间量。该表由字段 new_state、prev_state、room、timestamp 组成。我最近的尝试是

SELECT a.room, a.prev_state, a.new_state, 
timediff(a.timestamp, b.timestamp) from   status_change as a
(SELECT b.timestamp from status_change as b 
 WHERE a.timestamp<b.timestamp and a.room=b.room
 ORDER BY b.timestamp DESC LIMIT 1)

希望这能传达我想要实现的目标。

谢谢

最佳答案

SELECT t2.timestamp-t1.timestamp 
FROM state_change AS t1 
JOIN (SELECT * FROM state_change) AS t2 
ON t1.new_state = t2.prev_state AND t1.timestamp < t2.timestamp

关于mysql - 相关子查询(在同一个表上),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22674777/

相关文章:

php - PHP : got nothing with printing the array 中的 SQL 查询

mysql - 子查询和使用相关子查询引用外部的可能性

mysql - 列出每个玩家的前5个得分的平均值

mysql - 连接与子查询

MySQL 多级子查询

mysql - SQL 是否有类似 Django 的 "get_FOO_display()"?

MySQL 使用外键创建表给出 errno : 150

PHP 向数据库提交条目两次

javascript - 从 Access 到 MySQL 的 SQL 查询转换

sql - 如果子查询返回空,则更新中的列无效