我在 SQL 連接和更新中遇到了問題。嘗試了 ">=" / "=" / "<" 的不同組合,但從未獲得預期的結果。
Table: 'punchdata'
Id empID pType pDate pTime pInOut DeleteRec
32382 EMP-217 Attendance 2021-11-26 08:50:45 In 0
33540 EMP-217 Attendance 2021-11-26 12:34:21 Out 0
33171 EMP-217 Attendance 2021-11-26 17:13:49 Out 0
33170 EMP-217 Attendance 2021-11-26 17:09:49 Out 0
33168 EMP-217 Attendance 2021-11-26 17:11:18 In 0
33036 EMP-217 Attendance 2021-11-26 12:34:32 Out 0
SQL Statement:
update punchdata w1
join ( select min(id) as SIMPLEID, `empID`, `pDate`, `pTime`
from punchdata where pType = 'Attendance' AND pDate = '2021-11-26'
group by `empID`,`pDate`,`pTime` ) w2
on w1.id > w2.SIMPLEID
and w1.`empID` = 'EMP-217'
and w1.`pDate` = w2.`pDate`
and w1.`pTime` <= w2.`pTime`
and w1.`pInOut` = 'Out'
set w1.`DeleteRec` = '1'
Result:
Id empID pType pDate pTime pInOut DeleteRec
32382 EMP-217 Attendance 2021-11-26 08:50:45 In 0
33540 EMP-217 Attendance 2021-11-26 12:34:21 Out 1
33171 EMP-217 Attendance 2021-11-26 17:13:49 Out 0
33170 EMP-217 Attendance 2021-11-26 17:09:49 Out 1
33168 EMP-217 Attendance 2021-11-26 17:11:18 In 0
33036 EMP-217 Attendance 2021-11-26 12:34:32 Out 0
Intended Output:
Id empID pType pDate pTime pInOut DeleteRec
32382 EMP-217 Attendance 2021-11-26 08:50:45 In 0
33540 EMP-217 Attendance 2021-11-26 12:34:21 Out 1
33171 EMP-217 Attendance 2021-11-26 17:13:49 Out 0
33170 EMP-217 Attendance 2021-11-26 17:09:49 Out 1
33168 EMP-217 Attendance 2021-11-26 17:11:18 In 0
33036 EMP-217 Attendance 2021-11-26 ***12:34:32 Out 1***
有人可以幫忙嗎?
uj5u.com熱心網友回復:
為什么您決定id=33036應該更新該行?
見小提琴。沒有行的w1.id=33036所有 5 個條件都等于 TRUE(參見criteria_1和criteria_4,其中至少有一個是 FALSE)。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/388647.html
