Mysql 使用分组选择最低值

Mysql 使用分组选择最低值,mysql,Mysql,我正试图找到员工在创建工单时最接近的职位。My employees表保存对员工的所有更改,即经理更改、位置等。这是我编写的查询 SELECT DATEDIFF(t.created, e.valid_from) "diff", t.ticket_id, t.assignee_id, t.created AS 'ticket_created', u.user_id, u.email, e.valid_from, ... ...

我正试图找到员工在创建工单时最接近的职位。My employees表保存对员工的所有更改,即经理更改、位置等。这是我编写的查询

SELECT DATEDIFF(t.created, e.valid_from) "diff",
    t.ticket_id, 
    t.assignee_id, 
    t.created AS 'ticket_created',
    u.user_id,
    u.email,
    e.valid_from,
    ...
    ...
    ...
FROM tickets t
JOIN users u ON t.assignee_id = u.user_id
JOIN employees e ON u.email = e.email
这将为每个员工的变动提供一行。如何缩小范围,仅从DATEDIFF中选择最小的正整数?这将允许我获得最接近票证创建的单个职务

目前的示例输出

ticket_id diff ticket_created job_title email
111       2    20-04-18       XYZ       a@a.com
111       5    25-04-18       YYZ       a@a.com
111      -30   04-01-18       ABC       a@a.com

我想要的输出是只保留第一行,因为它是差异中最小的正整数。

尝试这样做-仅获取DATEDIFF将返回正结果(大于零)的记录,然后按实际DATEDIFF排序并获取第一个(最小)记录:

SELECT 
    t.ticket_id, 
    t.assignee_id, 
    t.created AS 'ticket_created',
    u.user_id,
    u.email,
    (SELECT e.job_title FROM employees e 
      WHERE u.email = e.email AND t.created > e.valid_from
      ORDER BY DATEDIFF(t.created, e.valid_from) LIMIT 1
    ) AS valid_from,
    ...
    ...
    ...
FROM tickets t
JOIN users u ON t.assignee_id = u.user_id