2015-10-14 52 views
0

我在MySQL数据库检入和人员结账的一些记录:SQL:选择最低的子查询和分组

SELECT * FROM db 

结果:

----------------------------------------------------------------------- 
ID   Name  Lastname   in    out 
1    James  Bond   20151014090000  20151014103000 
2    James  Bond   20151014110000  20151014123000 
3    James  Bond   20151014130000  20151014143000 
4    James  Bond   20151014150000  20151014163000 
5    James  Bond   20151014170000  20151014183000 
6    James  Bond   20151014190000  20151014203000 
7    Jason  Bourne  20151014090000  20151014103000 
8    Jason  Bourne  20151014110000  20151014123000 
9    Jason  Bourne  20151014130000  20151014143000 
10   Jason  Bourne  20151014150000  20151014163000 
11   Jason  Bourne  20151014170000  20151014183000 
12   Jason  Bourne  20151014190000  20151014203000 
13   Jack  Bauer  20151014090000  20151014103000 
14   Jack  Bauer  20151014110000  20151014123000 
15   Jack  Bauer  20151014130000  20151014143000 
16   Jack  Bauer  20151014150000  20151014163000 
17   Jack  Bauer  20151014170000  20151014183000 
18   Max  Payne  20151014090000  20151014103000 
19   Max  Payne  20151014110000  20151014123000 
20   Max  Payne  20151014130000  20151014143000 
21   Max  Payne  20151014150000  20151014163000 
22   Max  Payne  20151014170000  20151014183000 

我想获得最接近的日期到下面的当前日期,即进入,考虑到在内部(IN)。

我使用的,用于MySQL的当前日期的比较:

date_format(now(), '%Y%m%d%H%i%S') 

假设是20151014133000

我想获得一个查询是:

3    James  Bond   20151014130000  20151014143000 
9    Jason  Bourne  20151014130000  20151014143000 
15   Jack  Bauer  20151014130000  20151014143000 
20   Max  Payne  20151014130000  20151014143000 

非常感谢您的提前!

[EDIT1] 进出是INT的 我在格式,因为任意不等阶操作与实际时间进行比较吧: date_actual - in_value = time_lapsed 例如:

20151014133000 - 20151014090000 = 43000

如果我得到time_lapsed的最小值,我会得到最接近date_actual的日期,然后我将在数据库上搜索该日期按姓名和姓氏分组。

+0

采用abs(NOW() - 日期),以获得最接近的日期 –

+0

什么是你'in'和'out'的数据类型? – luoluo

+0

这似乎是一个不好的例子。所有日期都等于目标日期。所以'接近'是无关紧要的。 – Strawberry

回答

1

如果我理解正确的话,你需要:

SELECT DISTINCT `Name`, `Lastname`, MAX(IN) FROM DB 
+0

我根本不使用你的答案,你给我一点点关注;)。谢谢!! – ferminx360

+0

没问题!我很抱歉,我总是很忙,所以我并不总是有时间给出详细的答案。 – sijpkes