gpt4 book ai didi

mysql - 从 Select max() 查询中获取正确的行结果

转载 作者:行者123 更新时间:2023-11-30 22:15:36 24 4
gpt4 key购买 nike

可用性表是

    | avail_id | emp_id | effective_date | Friday | Saturday | Sunday |
| 0 | 15 | 2016-07-14 | Yes | Yes | No |
| 1 | 15 | 2016-06-14 | Yes | Yes | Yes |
| 2 | 12 | 2016-07-01 | Yes | No | No |
| 3 | 12 | 2016-07-14 | Yes | Yes | Yes |
| 4 | 17 | 2016-05-14 | No | Yes | Yes |
| 5 | 17 | 2016-06-14 | Yes | Yes | Yes |
| 6 | 17 | 2016-07-14 | Yes | No | No |

我一直在尝试以下查询的各种版本。

SELECT Availability.emp_id, max(Availability.effective_date), Availability.friday, Availability.saturday, Availability.sunday Employees.emp_fname, Employees.emp_lname FROM Availability LEFT JOIN Employees ON Availability.emp_id = Employees.emp_id WHERE Employees.active='Yes' GROUP BY Availability.emp_id ORDER BY Employees.position_id, Employees.emp_lname, Employees.emp_fname, Availability.effective_date DESC

我的目标是为每个员工选择具有最近可用性的行 - 并最终能够选择在给定日期*适用的可用性。不幸的是,我得到的结果将混合可用性表中每个员工第一行的值。例如,它会给我 15 号员工的生效日期 2016-07-14,但会给出对应于 2016-06-14 生效日期的其他列值。

*员工可能会在 3 周内开始上学时提交新的可用性,但在运行今天的报告时,我希望今天适用,而不是 3 周内适用。此外,没有适用于所有员工的新可用性的固定日期。

最佳答案

你可以在 max 子句中使用

SELECT 
Availability.emp_id
, Availability.friday
, Availability.saturday
, Availability.sunday
, Employees.emp_fname
, Employees.emp_lname
FROM Availability
LEFT JOIN Employees ON Availability.emp_id = Employees.emp_id
WHERE Employees.active='Yes'
AND (Availability.emp_id, Availability.effective_date ) in
( select Availability.emp_id , max(Availability.effective_date)
FROM Availability group by Availability.emp_id )
ORDER BY
Employees.position_id
, Employees.emp_lname
, Employees.emp_fname
, Availability.effective_date DESC

关于mysql - 从 Select max() 查询中获取正确的行结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38416060/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com