0

在我将 TIMEOUT 插入数据库之前,我想更新其相应的时间

      where timeIN.id = timeOUT.id

一种成功的合并方案是:

      when date.timeIN = date.timeOUT   (just like UID = 3)

第二种情况是我遇到了麻烦

      when date.timeIN != date.timeOUt  ( i want to merge UID = 1 and UID = 2)

我不能将日期用作查询的基础,因为它们不相等。是否可以查询 date.timeIN 已添加 1 天?

例子:

----------------------------------------------------------------------------
| UID |    EID   |       date            |     IN      |    OUT    |  CLASS
----------------------------------------------------------------------------
|  1  |   X001   |  2013-06-03 18:00:00  |   6:00 PM   |           |   IN
|  2  |   X001   |  2013-07-03 05:58:00  |             |  5:58 AM  |   OUT
|  3  |   X002   |  2013-06-03 07:30:00  |   7:30 AM   |  6:00 PM  |   

这是什么算法......或者你能给我一个关于如何完成的提示。我正在使用 vb.net。

编辑:我只想使用第二行中的超时值更新第一行的超时?我如何在 vb 和 mysql 中做到这一点?

----------------------------------------------------------------------------
| UID |    EID   |       date            |     IN      |    OUT    |  CLASS
----------------------------------------------------------------------------
|  1  |   X001   |  2013-06-03 18:00:00  |   6:00 PM   |  5:58 AM  |   
4

1 回答 1

0

鉴于您的编辑,这应该使用GROUP BYwithMIN()来获取 UID 和日期,并MAX()获取 IN 和 OUT 列:

select
  min(uid) uid,
  eid, 
  min(date) date, 
  max(`in`) `in`, 
  max(`out`) `out`
from yourtable
group by eid

选择 MIN(date) 可能是也可能不是您要查找的内容 - 这假定 MIN(date) 将与相应的 IN 记录一起使用(IN 出现在 OUT 之前)。

于 2013-06-05T03:30:07.577 回答