我在论坛中搜索了解决方案,但这些示例对我来说没有意义。我知道我的语法不正确,但这是我试图传达的想法。
假设查询是在 2012-03-09 24:00:00 运行的。 (我认为我正确编辑了虚拟值)
task_status是一个 View ,running=(began>end),ran=((now()-ending)<10h)
select * from task_status;
+----------------+---------------------+---------------------+---------+------+
| task | began | ended | running | ran |
+----------------+---------------------+---------------------+---------+------+
| MIRRORS_SPLIT | 2012-03-09 19:15:48 | 2012-03-09 19:15:51 | 0 | 1 |
| NETWORK_BACKUP | 2012-03-09 19:25:01 | 2012-03-09 19:23:41 | 0 | 1 |
| TAPE_BACKUP | 2012-03-09 19:26:01 | 2012-03-09 23:16:32 | 0 | 1 |
+----------------+---------------------+---------------------+---------+------+
我在创建 BACKUPS 行、began=(MIN(NETWORK_BACKUP.began, TAPE_BACKUP.began)
和 end=(MAX(NETWORK_BACKUP.end, TAPE_BACKUP.end) 时遇到问题)
。那么 running 和 ran 应该正确评估,对吗?
我想添加一行,结果如下:
| BACKUPS | 2012-03-09 19:25:01 | 2012-03-09 23:16:32 | 0 | 1 |
任何帮助将不胜感激。
最佳答案
您使用 MIN() 和 MAX() 的方式似乎是错误的,请记住,这些是聚合函数。它们处理一组由您作为参数传递的列的内容定义的值。
您似乎希望它们通过传递两个参数来告诉您两个不同行的 begin 和 end 值的 MIN 或 MAX 值。 (除非我没有正确理解你的伪语法)。
你不是在寻找类似的东西
SELECT 'BACKUPS', MIN(began), MAX(ended)
FROM task_status WHERE task = 'NETWORK_BACKUP' OR task = 'TAPE_BACKUP'
GROUP BY task
关于mysql - 对 mysql 表/ View 中的特定多行执行 bool 逻辑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9730325/