mysql - 如何在SELECT中获取任何数据

时间:2013-12-25 19:26:12

标签: mysql select datediff

我正在尝试制作一个摘要,如果过去一天SELECT中的任何数据显示...或者仅显示一天(if > 0 : +if < 0 : -)。

像这样:这些是我的桌子。

我们说,今天是 2013-12-25

tb_employee:

   ID_EMP                   EMPLOYEE               
     1                     Employee 1 
     2                     Employee 2 
     3                     Employee 3 

tb_requirement:

ID_REQ                   REQUIREMENT
   1                    Requirement 1
   2                    Requirement 2
   3                    Requirement 3
   4                    Requirement 4

tb_detail:

 ID_DET                   ID_EMP                ID_REQ          EXPIRATION
   1                         1                    1             2013-12-29
   2                         1                    2             2013-12-28
   3                         1                    3             2013-12-31

   4                         2                    2             2014-01-05
   5                         2                    3             2013-12-20
   6                         2                    4             2013-12-15

现在,SELECT QUERY应该显示如下:

 ID_EMP            EMPLOYEE            REQUIREMENTS_GOT           ANY_REQ_EXPIRE
    1             Employee 1                 3                        YES
    2             Employee 2                 3                         NO

我希望我解释得很好。也许可能是DATEDIFF

感谢您的回答...当然,圣诞快乐

1 个答案:

答案 0 :(得分:1)

由于您要确定任何要求是否已过期,您应该将最小到期日期与今天的日期进行比较。没有必要使用datediff - 在>语句中打包的简单case运算符会执行:

SELECT   id_emp, 
         employee, 
         COUNT(*) AS requirements_got,
         CASE WHEN CURDATE() > MIN(expiration) THEN 'yes' ELSE 'no' END AS any_req_expire
FROM     tb_detail
JOIN     tb_employee ON tb_detail.id_emp = tb_employee.id_emp
GROUP BY id_emp, employee