mysql - 对 mysql 表/ View 中的特定多行执行 bool 逻辑

标签 mysql

我在论坛中搜索了解决方案,但这些示例对我来说没有意义。我知道我的语法不正确,但这是我试图传达的想法。

假设查询是在 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/

相关文章:

MySQL - 多对多表 - 主键和重复项

python - 获取结果列表,每个外键 1 个

php - 如何删除特定用户的 session 登录

mysql - puppet mysql 用户权限问题

php - Magento:为下的每个订单自动创建 CSV 文件

python - 尝试重新连接时 MySQL/Python 终端崩溃

mysql - 使用 MySQL 选择按列分组的唯一行

mysql - 如何在 SQL 上设置价格

MySQL - 插入触发器后不运行更新查询?

mysql - sql(mysql)中哪些用户与旧用户相关的列表