从多值的MySql查询中获取真/假结果

时间:2015-07-14 21:40:03

标签: php mysql

我有一个包含列的数据表:

id
person
theDate

每行代表person的签到以及签到人的日期。每次签到都是一个新行,每人每天不会有多个签到。

我想要实现的是一个可以执行以下操作的MySQL查询:

  1. 检查昨天WHERE person='BOB' AND theDate=subdate(CURDATE(), 1)是否有一行,如果有一行,则返回true,否则返回false
  2. 检查两天前是否有一行WHERE person='BOB' AND theDate=subdate(CURDATE(), 2),如果有一行,则返回true,否则返回false
  3. 检查今天是否有一行WHERE person='BOB' AND theDate=CURDATE(),如果有一行,则返回true,否则返回false
  4. 我意识到我可以做三个单独的查询并进行行计数并将结果存储到变量中;但是,我认为单个查询会更有效。

    布尔值的要求也不固定。 <{1}}代替1也可以做到。

    我的猜测是做以下事情,但显然不起作用:

    true

1 个答案:

答案 0 :(得分:0)

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'