select*,max(create_time)froma
wherecreate_time<="2017-03-2919:30:36"
groupbyuser_id
这句可以理解为将结果集根据user_id分组,每组取time最大一条记录。这样就很好的实现了批量查询最近记录,并且仅仅需要遍历一次表,即使在数据量巨大的情况下也可以在很短的时间查出结果。
扩展资料:SQL数据查询语句
1、语句语法简单归纳为:
SELECT select_list [INTO new_table_name][FROM table_source]
[WHERE search_condition][GROUPBY group_by_expression]
[HAVING search_condition][ORDERBY order_expression [ASC|DESC]]
2、WITH子句用于指定临时命名的公用表达式,在单条语句(SELECT、INSERT、UPDATE、DELETE)的语句执行范围内定义。
3、LIKE关键字
用于模糊查询,通配符有%、_、[]、[^]
%:后面可以跟零个或多个字符
_:匹配任意单个字符
[]:查询一定范围内的单个字符,包括两端数据
[^]:表示不在一定范围内的单个字符,包括两端数据
获取最新数据就会显示。如下参考:
1.打开电脑,打开mysql数据库,点击数据库,在右上角输入查询,点击新查询下面的zd查询。如图。
2.然后可以通过gmt_create从crew_1中输入SELECT*,表中的所有记录都将按时间排序,如图所示。
3.如果需要获得按时间排序的表中的第一条记录,请输入SELECT*fromcrew_1orderbygmt_createdesclimit0,1,如图所示。
4.如果您需要获得第五个记录,请输入SELECT*fromcrew_1orderbygmt_createdesclimit4,1,如下所示。
5.如果需要获取1001记录,只需将limit4,1更改为limit1000,1。如果需要获取n条记录,在查询语句中添加limitn-1,1,如图所示。
6.如果需要获取表中的前n条记录,则更改为限制n,如图所示。
52.使用完错误代码之后, 应该随手清空它,以免造成下次错误捕获不正确,我们使用一uju error变量()53.为了防止多次数据库 *** 作导致数据库不完整( )我们可以使用(colse)
54. connection 对象为我们提供了三个与事务相关的方法,请写上它们:开启事务:(connedtion.begintrans ),结束事务并保有更改:
connection(.committrans ),结束事务并却小更改:connection(.rollbacktrans )
55.如果我们查得到数据表中某个字段的信息需要用recordset对象的(fields )集合中的(name )对象。
56.取得field对象的方法是:set field=recordset.fields.item(i),我们可以通过field对象的(name)属性得到字段名,还可以通过(
type)属性得到字段的类型。
57.我们可以在记录集内移动指针,以便 *** 作不同的数据记录,如果我们要将指针移到最后一条记录,可以使用(recordset.movelast )方法
,将指针移到首记录使用(recordset.movefirst )方法,移动到上一条记录使用(recordset.previous )方法,移动到下一条记录可使用(
recordset.movenext )方法。
58.删除记录,我们可以直接使用SQL语句中的delete语句,也可以将记录查询到之后使用recordset对象的( delete)方法来删除当前记录。
虽然直接使用Delete语句删除记录非常方便,但有时对于一些需要进行复杂判断才决定是否删除记录的情况下,我们还是要使用recordset对象
的(delete )方法来删除记录。
59.更新一条记录除可以使用update语句外,还可以将记录查询到之后,改变各字段的值,然后使用recordset对象的( addnew )方法来更新
数据。虽然直接使用update语句更新数据十分方便,但有时对于需要进行一些不规则更新的时候还是要使用到recordset对象的(addnew )方
法来更新数据记录。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)