我有这张 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/