Mysql 使用分组选择最低值
我正试图找到员工在创建工单时最接近的职位。My employees表保存对员工的所有更改,即经理更改、位置等。这是我编写的查询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, ... ...
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