A表中的数据:
ID name card bookingtime
0001 张三 20f2743c78709c95 2016-04-15 12:29:48
0002 李四 20f2743c78709c93 2016-08-16 12:29:48
0003 王五 20f2743c78709c94 2016-08-17 12:29:48
0004 赵六 20f2743c78709c91 2016-08-18 12:29:48
0005 刘磊 41121b0329647692 2016-08-25 15:14:54
0006 刘磊 41121b0329647692 2016-08-22 15:14:54
0007 李四 20f2743c78709c93 2016-08-24 12:29:48
B表中的数据:
ID card checktime
1 41121b0329647692 2016-08-23 09:33:11
2 41121b0329647692 2016-08-26 11:04:23
3 20f2743c78709c95 2016-04-16 12:29:48
要求:根据A表的 card 到 B表中查询相应的记录,若B表有多条记录,则根据 A bookingtime 与 B表的 checktime 最相近的匹配查询。本人想要得到的结果如下:
id name card bookingtime checktime
0001 张三 20f2743c78709c95 2016-04-15 12:29:48 2016-04-15 12:29:48
0003 王五 20f2743c78709c94 2016-08-17 12:29:48 null
0004 赵六 20f2743c78709c91 2016-08-18 12:29:48 null
0005 刘磊 41121b0329647692 2016-08-25 15:14:54 2016-08-25 15:14:54
0006 刘磊 41121b0329647692 2016-08-22 15:14:54 2016-08-23 09:33:11
0007 李四 20f2743c78709c93 2016-08-24 12:29:48 null
SQL语句怎么写才能得到本人想要的结果?
ID name card bookingtime
0001 张三 20f2743c78709c95 2016-04-15 12:29:48
0002 李四 20f2743c78709c93 2016-08-16 12:29:48
0003 王五 20f2743c78709c94 2016-08-17 12:29:48
0004 赵六 20f2743c78709c91 2016-08-18 12:29:48
0005 刘磊 41121b0329647692 2016-08-25 15:14:54
0006 刘磊 41121b0329647692 2016-08-22 15:14:54
0007 李四 20f2743c78709c93 2016-08-24 12:29:48
B表中的数据:
ID card checktime
1 41121b0329647692 2016-08-23 09:33:11
2 41121b0329647692 2016-08-26 11:04:23
3 20f2743c78709c95 2016-04-16 12:29:48
要求:根据A表的 card 到 B表中查询相应的记录,若B表有多条记录,则根据 A bookingtime 与 B表的 checktime 最相近的匹配查询。本人想要得到的结果如下:
id name card bookingtime checktime
0001 张三 20f2743c78709c95 2016-04-15 12:29:48 2016-04-15 12:29:48
0003 王五 20f2743c78709c94 2016-08-17 12:29:48 null
0004 赵六 20f2743c78709c91 2016-08-18 12:29:48 null
0005 刘磊 41121b0329647692 2016-08-25 15:14:54 2016-08-25 15:14:54
0006 刘磊 41121b0329647692 2016-08-22 15:14:54 2016-08-23 09:33:11
0007 李四 20f2743c78709c93 2016-08-24 12:29:48 null
SQL语句怎么写才能得到本人想要的结果?
解决方案
50
select a.*, (select min(checktime) from B表中的数据 where card=a.card ) from A表中的数据 a