mysql查询每个用户第一条数据_MySQL数据库订单表按用户邮箱字段分组查询每个用户的第一条记录...
程序开发或者一些数据统计时,在MySQL中使用GROUP BY分组是很常用的SQL语句。那么,如果如下的简单示例订单数据表,我们现需要使用GROUP BY分组后查询每个用户的第一个订单记录,应该如何实现呢?
首先,我们创建示例数据表:orders,SQL语句如下:
CREATE TABLE `orders` (
`id` int(6) NOT NULL AUTO_INCREMENT,
`email_address` varchar(45) NOT NULL DEFAULT '',
`created_on` datetime DEFAULT CURRENT_TIMESTAMP,
`price` decimal(8,2) DEFAULT '0.00',
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=0 DEFAULT CHARSET=utf8 COMMENT='订单表';
数据库成功创建后,我们插入一些示例数据:
INSERT INTO orders (email_address,price)VALUES('a@a.com',25.55);
INSERT INTO orders (email_address,price)VALUES('b@a.com',20.75);
INSERT INTO orders (email_address,price)VALUES('c@a.com',52.35);
INSERT INTO orders (email_address,price)VALUES('c@a.com',20.00);
INSERT INTO orders (email_address,price)VALUES('e@a.com',80.85);
INSERT INTO orders (email_address,price)VALUES('a@a.com',95.15);
INSERT INTO orders (email_address,price)VALUES('c@a.com',210.55);
INSERT INTO orders (email_address,price)VALUES('f@a.com',57.00);
以上orders表和数据都准备好之后,最后一步则需要使用GROUP BY的SQL语句来查询按用户分组的每个用户订单价格最高的第一条记录了,如下:
SELECT MIN(O.id) AS min_id
,O.email_address
,O.price
FROM orders AS O
JOIN (SELECT A.email_address,MAX(price) AS max_price
FROM orders AS A
GROUP BY A.email_address) AS T
ON T.email_address=O.email_address AND T.max_price=O.price
GROUP BY O.email_address,O.price
执行以上GROUP BY的分组查询,结果如下截图:
关于MySQL的查询有很多方式,本文旨在提供一种可行的实现方式,如果你有其他的实现SQL语句,欢迎留言反馈,交流。
mysql查询每个用户第一条数据_MySQL数据库订单表按用户邮箱字段分组查询每个用户的第一条记录...相关推荐
- mysql 获取一条数据_MySQL数据库中随机获取一条或多条记录
在开发过程中遇到了一个问题,使用MySQL数据库,用SQL语句在表中随机获取一条或多条数据,看似简单,但是往深层研究的话还是很有深度的,查了好多资料,接下来给大家分享一下: 1. 随机获取单条数据 S ...
- mysql插10万条数据_MySQL数据库插入100w条数据要花多久?
MySQL数据库插入100w条数据要花多久? 1.多线程插入(单表) 2.多线程插入(多表) 3.预处理SQL 4.多值插入SQL 5.事务(N条提交一次) # 多线程插入(单表) 问:为何对同一个表 ...
- mysql用户数据导入_mysql创建数据库、用户及导入数据_mysql数据库教程
怎样mysql创建数据库.用户及导入数据 1. 修改MYSQL服务器字符集为utf8: 1.1 当前MYSQL服务器字符集设置 SHOW VARIABLES LIKE 'character_set_% ...
- mysql表如何删除一条数据_mysql如何删除表中一行数据?
mysql中使用DELETE语句删除表中一行数据,语句为"DELETE FROM 表名称 WHERE 列名称 = 值".删除所有行的语句为"DELETE FROM tab ...
- mysql没有索引删除一亿数据_mysql数据库如何实现亿级数据快速清理
今天收到磁盘报警异常,50G的磁盘被撑爆了,分析解决过程如下: 1. 进入linux服务器,查看mysql文件夹中各个数据库所占的磁盘空间大小 看到了吗,光olderdb就占了25G 2. 用SQLy ...
- mysql怎么快速删除亿级数据_mysql数据库如何实现亿级数据快速清理
今天收到磁盘报警异常,50G的磁盘被撑爆了,分析解决过程如下: 1. 进入linux服务器,查看mysql文件夹中各个数据库所占的磁盘空间大小 看到了吗,光olderdb就占了25G 2. 用SQLy ...
- 获取表数据_mysql数据库部分表被truncate,部分数据被delete的解决过程
服务器数据恢复环境部署及故障原因: 华为云ECS网站服务器,服务器采用linux操作系统,数据库版本号5.6,. 在执行数据库版本更新测试时,错误地将本应在测试库执行的sql脚本执行于生产库,导致部分 ...
- mysql 异常关机后 无法查数据_MySQL数据库非法关机造成数据表损坏怎么排查 | 学步园...
该篇文章我们介绍由于非法硬件关机,造成了MySQL数据库的数据表损坏,数据库不能正常运行的一个实例.下面学步园小编来讲解下MySQL数据库非法关机造成数据表损坏怎么排查? MySQL数据库非法关机造成 ...
- mysql导入竖杠分割的数据_MYSQL :逗号分隔串表,分解成竖表
DROP TEMPORARY TABLE IF EXISTS Temp_Num ; CREATE TEMPORARY TABLE Temp_Num ( xh INT PRIMARY KEY ); -- ...
最新文章
- Samba的配置命令
- .Net 多线程 异步编程 Await、Async和Task
- Spark Core
- django 笔记17 ModelForm
- 关于style设置方法,obj.setAttribute(style.)和obj.style.stylename
- 感知机:Perceptron Learning Algorithm
- Linux-----进程获得进程号 获得父进程号 获得进程组号 getpid getppid getpgid
- 安装Oracle问题总结
- c语言冒泡排序算法解析
- Vieux-部分型号iPhone\iPad\iPod降级工具使用教程
- Turnitin查重原理是什么?
- 交易方法我的总结仔细看看
- win11如何备份系统 Windows11备份系统的设置方法
- 基于C的VAD实现一
- matplotlib无法显示中文问题的解决(全网最全)
- (JAVA)错误:Type mismatch: cannot convert from double to float ,这是什么意思?如何解决?
- [python] 分治法查找数组元素的最大值和最小值
- Cufllinks的安装与使用
- Python异常和异常处理
- 【踩坑专栏】NoSuchBeanDefinitionException: No qualifying bean of type ‘xxx.xxxMapper
热门文章
- 假如,人工智能也去摆地摊
- 程序员给小姐姐修电脑的最佳地方和姿势
- 【AI专利】中国成为全球AI专利第二大提交国,微软AI专利数比你论文字数都多...
- 独家 | 2019届互联网校招本科薪酬清单|湾区人工智能
- 毛概社会实践报告3000字
- python使用osgeo库_MAC下python2.7的GDAL库配置问题
- python面向对象和面向过程_python--什么是面向对象和面向过程,对象的进化,什么是对象...
- 在“后台反复读取用户相册”?微信回应:最新版本将取消
- 十三不香了?不止去掉刘海,iPhone14或改用QLC闪存:最高2TB容量
- 蚂蚁森林:不存在网友反馈的“没有造林”的情况 干旱造成梭梭矮小