在项目中要查询用户最近登录的一条记录的ip 直接写如下 SQL:	1	SELECTip,MAX(act_time)FROMusers_loginGROUPBYlogin_id;	但是这样是取不出用户登录记录中时间最大的那个 ip , 仅仅只是查到...
在项目中要查询用户最近登录的一条记录的 ip
直接写如下 SQL:

SELECTip,MAX(act_time)FROMusers_loginGROUPBYlogin_id;

但是这样是取不出用户登录记录中时间最大的那个 ip , 仅仅只是查到了最大时间,和ip 没关系
找了相当多的文章,经过自己测试,发现一个比较好的方式处理这个问题,举例如下:
现在假设有一张数据表 A , 字段和数据如下:

姓名(name)身份证(唯一标识)(id)购买产品(pro)价格(price)数量(count)购买时间(time)
张1111111Computer16005
张111111Phone1212
张222222Pipe1234
张222222Computer16005
张333333Phone1212
张333333Pipe1234
张333333Computer16005
张444444Phone1212
张555555Pipe1234

在这张数据表中,我们需要查询表中每一个用户在最后一次都购买了什么产品以及相关信息
SQL语句如下:

SELECT*from(SELECT*FROMAORDERBYtime) aGROUPBYa.id;

解释:
在这里,我们首先对 A 表进行按照时间的顺序排序,这样我们可以把每个用户最后一次购买记
录排在最上面,排序之后再嵌套一层查询,这一层查询使用 GROUP BY 语句。在使用GROUP
BY 语句的时候,他会按照分组将你排过序的数据的第一条取出来,这样就比较符合条件了,这种
方式在添加索引的情况下效率相当快
Mysql 5.7 以后,子查询 ORDER BY不会被优化器执行,可以在子查询中添加 LIMIT解决
或者使用聚合函数:
select *from test t1 join (select t_id,max(time) as time from test group by t_id) t2 on t1.t_id = t2.t_id
有时候,需要将查询出的多条记录,变为一条添加到另外
有时候,需要将查询出的多条记录,变为一条添加到另外一个表中。就可以使用MySQL的GROUP_CONCAT函数,
这两篇文章描述的很详细:
http://dev.mysql.com/doc/refman/5.0/en/group-by-functions.html#function_group-concat
第一步,开通云开发: ... 开通之后会有一个控制台,可以直接在控制台进行数据库的操作 ...注:AppID 首次开通云环境后,需等待大约 10 ...云开发提供了一个JSON 数据库,顾名思义,数据库中的每条记录都是一个JS...
先来一个给云数据库添加一条数据库记录的代码:
wx.cloud.init({ env:'school-5k07l' }) const db = wx.cloud.database() const school = db.collection('school_db') //school_db是数据库记录的名称,相当于MYSQL中数据库的表的名字 school.add({ // data 字段表示需新增的 JSON 数据 data: { name: '食堂厕所', place: '一二食堂一楼', type: '厕所' }, success: function (res) { // res 是一个对象,其中有 _id 字段标记刚创建的记录的 id console.log('--------------',res) } })
第一步,开通云开发:
点击开发者工具左上角的云开发按钮,就可以开通,个人认证的小程序也可以开通。
开通之后会有一个控制台,可以直接在控制台进行数据库的操作
注:AppID 首次开通云环境后,需等待大约 10 分钟方可正常使用云 API
云开发中的数据库和普通的数据库是有区别的,下面看看有什么区别
云开发提供了一个 JSON 数据库,顾名思义,数据库中的每条记录都是一个 JSON 格式的对象。一个数据库可以有多个集合(相当于关系型数据中的表),集合可看做一个 JSON 数组,数组中的每个对象就是一条记录,记录的格式是 JSON 对象。
关系型数据库和 JSON 数据库的概念对应关系如下表:

关系型文档型
数据库 database数据库 database
表table集合 collection
行row记录 record / doc
列column字段 field

以下是一个示例的集合数据,假设我们有一个books集合存放了图书记录,其中有两本书:
[ { "_id": "Wzh76lk5_O_dt0vO", "title": "The Catcher in the Rye", "author": "J. D. Salinger", "characters": [ "Holden Caulfield", "Stradlater", "Mr. Antolini" ], "publishInfo": { "year": 1951, "country": "United States" } }, { "_id": "Wzia0lk5_O_dt0vR", "_openid": "ohl4L0Rnhq7vmmbT_DaNQa4ePaz0", "title": "The Lady of the Camellias", "author": "Alexandre Dumas fils", "characters": [ "Marguerite Gautier", "Armand Duval", "Prudence", "Count de Varville" ], "publishInfo": { "year": 1848, "country": "France" } } ]
在图书信息中,我们用title,author来记录图书标题和作者,用characters数组来记录书中的主要人物,用publishInfo来记录图书的出版信息。在其中我们可以看到,字段既可以是字符串或数字,还可以是对象或数组,就是一个 JSON 对象。
每条记录都有一个_id字段用以唯一标志一条记录、一个_openid字段用以标志记录的创建者,即小程序的用户。需要特别注意的是,在管理端(控制台和云函数)中创建的不会有_openid字段,因为这是属于管理员创建的记录。开发者可以自定义_id,但不可自定义和修改_openid。