mysql - 如果有特定值则获取sql数据

标签 mysql sql

我有这张 table :

id           device         createdAt                 type
1            700           2018-09-06 10:00:00        atos
2            700           2018-09-06 09:30:00        farkos

这个想法是验证在过去的 x 小时内我是否在此表中只有数据 type = atos

对于这种情况,我想得到一个 false 结果。如果此表在过去 h 小时内仅包含 type = atos,则预期结果应该为 true。

我尝试了这样的操作,然后用 php 检查,但不是一个好主意(我只想在 sql 中执行此操作),无需额外处理:

SELECT * FROM table t 
WHERE t.device = 700 
AND t.createdAt >= '2018-09-05 11:00:00'

最佳答案

此查询将执行您想要的操作。它会查看指定时间内的所有条目,如果其中任何一个不是 atos,将返回 0 (false)。否则将返回 1(真)。

SELECT MIN(CASE WHEN t.type != 'atos' THEN 0 ELSE 1 END) 
FROM table1 t
WHERE t.device = 700 AND t.createdAt >= '2018-09-05 11:00:00'

如果您想检查过去 h 小时,请将 WHERE 子句更改为

WHERE t.device = 700 AND t.createdAt >= NOW() - INTERVAL h HOUR

关于mysql - 如果有特定值则获取sql数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52219233/

相关文章:

sql - 使用不同列的不同可选值更新多行

mysql - mysql如何区分大写和小写

mysql - 授予高级用户直接运行 SQL 查询的权限

php - SQL:选择没有任何行具有特定列值的 ID

javascript - 多次将相同的记录添加到数据库而不是一次

大表上的 SQL WHERE -> 先加入小表还是直接在 WHERE 子句中放 FK?

java - 为什么我不能使用调度程序安排固定延迟任务

php - 在表中显示查询结果

mysql - 更新mysql左外连接忽略数据并只写入一个特定值

mysql - 从子查询中选择前n个