2015-10-14 53 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