来自同一个表mysql的子查询

问题描述 投票:0回答:1

我对子查询有疑问。我有桌子:

Emp_ID 日期_条目 时钟输入 下班
E-0001 2024-02-01 2024-02-01 22:01:00
E-0001 2024-02-02 2024-02-02 06:01:05
E-0001 2024-02-03 2024-02-03 06:01:00 2024-02-03 14:00:20
E-0001 2024-02-04 2024-02-04 08:00:00 2024-02-04 17:01:05

如何使用mysql查询,以便当clock_in >= 22:00:00时,clock_out选择第二天的clock_out,如下所示?:

Emp_ID 日期_条目 时钟输入 下班
E-0001 2024-02-01 2024-02-01 22:01:00 2024-02-02 06:01:05
E-0001 2024-02-02 2024-02-02 06:01:05
E-0001 2024-02-03 2024-02-03 06:01:00 2024-02-03 14:00:20
E-0001 2024-02-04 2024-02-04 08:00:00 2024-02-04 17:01:05

任何帮助将不胜感激。预先感谢您!

mysql subquery
1个回答
0
投票
SELECT t1.Emp_ID, 
       t1.Date_Entry, 
       t1.Clock_In, 
                -- return next-day time if joined and is not NULL
                -- and current-day time if not joined
       COALESCE(t2.Clock_Out, t1.Clock_Out) Clock_Out
FROM table t1
                      -- join only when time is above 22:00
LEFT JOIN table t2 ON TIME(t1.Clock_In) >= '22:00'
                      -- join only next-day row (if exists)
                  AND t1.Date_Entry + INTERVAL 1 DAY = t2.Date_Entry
© www.soinside.com 2019 - 2024. All rights reserved.