mysql order by 然后设置最新日期的值

标签 mysql perl email variables

我目前正在制作一个程序,如果某人上次输入的日期已过(某个时间范围),该程序将发送电子邮件。我的 table 是这样布置的:

employee   | dept. | date       | other | 
bob        | 1     | 2012-05-29 | abc   |
bob        | 1     | 2012-07-15 | xyz   |
jon        | 2     | 2012-05-29 | abc   |

(我已按员工和日期对 mysql 进行排序) 例如,对于 Bob,我想自动将一个变量分配给日期 2012-07-15,因为这是他最后一次输入的日期。然后根据当前日期,如果提交之间的时间太长,我想发送一封电子邮件。我的问题是如何将变量分配给表中每个人的最后日期?我也愿意接受不同的更好的方法来做到这一点。谢谢。

最佳答案

要返回每个员工的最新日期,类似这样的方法就可以了。

SELECT employee
     , MAX(`date`) AS latest_date
  FROM mytable
 GROUP BY employee
 ORDER BY employee
<小时/>

附录,

正如 simbabque 指出的那样,这适用于获取最新日期,但不会返回 other 值。有几种方法可以获取结果集。

如果我们保证(员工,日期)是唯一的(例如,通过唯一约束),我们可以使用如下查询返回具有最新日期的行上的其他列:

SELECT t.employee, t.`date`, t.other
 FROM mytable t
 JOIN ( SELECT r.employee, MAX(r.`date`) AS latest_date
         FROM mytable r
        GROUP BY r.employee
      ) s
   ON s.employee = t.employee
  AND s.latest_date = t.`date`
ORDER BY t.employee

如果我们不能保证 (employee, date) 是唯一的,则此查询是不够的。但有几种方法可以解决这个问题。

关于mysql order by 然后设置最新日期的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11103132/

相关文章:

perl - 如何在 Perl 中实现 QT(质量阈值)聚类?

perl - List::Util - 减少 - 长度 - 编码 - 问题

php - 注册后使用 Controller 或路由发送电子邮件

java - 交易和发送电子邮件

php - 优化小型 MySQL 连接查询

mysql - Laravel Eloquent 地查询聚合值的 groupBy

linux - 在 Debian 和 CentOS 上安装 Perl 时出现 Makefile.PL 错误

android - Android 中的 MFMailComposeViewController?

php - 如何为我的网站使用 VCS?

Mysql带索引的查询需要很长时间