我有一个数据表设置与列:
id
person
theDate
每行将表示来自person
的签入和该人员签入的日期。每次签入都将是一个新的行,并且每个人每天不会有超过一次的签入。
我想实现的是一个MySQL查询,可以做以下事情:
- 检查是否有昨天
WHERE person='BOB' AND theDate=subdate(CURDATE(), 1)
的行,如果有,返回true
,否则返回false
。 - 检查是否有两天前的
WHERE person='BOB' AND theDate=subdate(CURDATE(), 2)
行,如果有,返回true
,否则返回false
。 - 检查是否有今天
WHERE person='BOB' AND theDate=CURDATE()
的行,如果有,返回true
,否则返回false
。
我意识到我可以做三个单独的查询,做行计数,并将结果存储到一个变量;但是,我认为对于单个查询来说效率会更高。
对boolean的要求也不是固定的。用1
代替true
也可以。
我的猜测是这样做,但它显然不起作用:
SELECT (SELECT COUNT('id') FROM timecard WHERE theDate = subdate(CURDATE(), 1)) as yesterday, (SELECT COUNT('id') FROM timecard WHERE theDate = subdate(CURDATE(), 2)) as twodays , (SELECT COUNT('id') FROM timecard WHERE theDate = CURDATE()) as today
select sum(theDate = subdate(CURDATE(), 2)) > 0 as two_days_ago,
sum(theDate = subdate(CURDATE(), 1)) > 0 as yesterday,
sum(theDate = CURDATE()) > 0 as today
from your_table
where person = 'BOB'