mysql 查询重复记录 取第一条_取出重复记录的第一条
这几天在查询购买记录,其中一个需求就是查出来客户首次购买的产品时间和产品名称。说白了,就是在一段时间内,去取出来用户的第一次购买记录,再清楚一些就是在一堆重复的记录中取出第一条购买记录。
这个问题捉只让我困扰了一段时间,自己最存储过程还是不能驾轻就熟,所以还是得按照传统的方法来进行查询了。
要查询的记录如下:
而我们要取出来的记录如下:
事实上,这样的记录如果取出来第一条记录还是比较好取的,因为这里面有购买时间,我们可以根据购买时间,来取出首次购买的记录。同一个用户,购买的时间最早的,就是首次购买产品。
mysql> select account,itemid,buytime from testdup
-> where buytime in (select min(buytime)
-> from testdup group by account);
得到的结果如下
+-------------+----------+---------------------+
| account | itemid | buytime |
+-------------+----------+---------------------+
| zoinzone | 2686977 | 2011-06-25 18:15:26 |
| llCoKell | 65599 | 2011-06-14 00:44:36 |
| eventcso010 | 3735553 | 2011-06-23 15:34:33 |
| eventcso004 | 18939907 | 2011-06-24 18:33:35 |
+-------------+----------+---------------------+
4 rows in set (0.00 sec)
此外,还有的情况是,没有这样一个时间的标记项,让我们取出记录中每个重复记录的第一条,我们可以新建一列ID,自动累加,如下:
mysql> select * from testdup;
+----+-------------+----------+---------------------+
| id | account | itemid | buytime |
+----+-------------+----------+---------------------+
| 1 | zoinzone | 655361 | 2011-06-25 18:16:14 |
| 2 | zoinzone | 2686977 | 2011-06-25 18:15:26 |
| 3 | llCoKell | 6691703 | 2011-06-16 19:30:48 |
| 4 | llCoKell | 65599 | 2011-06-14 00:44:36 |
| 5 | eventcso010 | 3735553 | 2011-06-23 15:34:33 |
| 6 | eventcso010 | 3735553 | 2011-06-26 17:24:25 |
| 7 | eventcso004 | 18939907 | 2011-06-24 18:33:35 |
+----+-------------+----------+---------------------+
7 rows in set (0.02 sec)
我们可以通过ID来取出我们想要的记录:
mysql> select * from testdup
-> where id in (select min(id)
-> from testdup group by account);
+----+-------------+----------+---------------------+
| id | account | itemid | buytime |
+----+-------------+----------+---------------------+
| 1 | zoinzone | 655361 | 2011-06-25 18:16:14 |
| 3 | llCoKell | 6691703 | 2011-06-16 19:30:48 |
| 5 | eventcso010 | 3735553 | 2011-06-23 15:34:33 |
| 7 | eventcso004 | 18939907 | 2011-06-24 18:33:35 |
+----+-------------+----------+---------------------+
4 rows in set (0.00 sec)
mysql 查询重复记录 取第一条_取出重复记录的第一条相关推荐
- mysql 查询相同字段值的个数_好文 | MySQL 索引B+树原理,以及建索引的几大原则...
MySQL事实上使用不同的存储引擎也是有很大区别的,下面猿友们可以了解一下. 一.存储引擎的比较 注:上面提到的B树索引并没有指出是B-Tree和B+Tree索引,但是B-树和B+树的定义是有区别的. ...
- mysql查询一个表有哪些索引_如何查看某张数据库表上都有哪些索引(转)
索引使用简介 一. 关于索引的知识 要写出运行效率高的sql,需要对索引的机制有一定了解,下面对索引的基本知识做一介绍. 1. 索引的优点和局限 索引可以提高查询的效率,但会降低dml操作的效率. 所 ...
- 查询数据 抓取 网站数据_有了数据,我就学会了如何在几个小时内抓取网站,您也可以...
查询数据 抓取 网站数据 I had a shameful secret. It is one that affects a surprising number of people in the da ...
- mysql查询结果随机取一个_从SQL查询结果随机取一条数据
最近工作中会涉及复杂的SQL语句,还是挺有意思的.以前想写没有应用场景,现在正好可以多锻炼锻炼.我觉得在实际开发中,程序代码并不是最难的,最难的还是SQL.SQL逻辑性最强,而且还要很清楚表设计,业务 ...
- mysql 查询不为0的数据_查询数据库中所有记录总数不为0的数据表名称
[如何查询postgreSQL 里面某个数据库中所有用户定义的数据表的名字@forandever 2011-11-131.通过命令行查询\d 数据库 -- 得到所有表的名字\d 表名 -- 得到表 ...
- mysql查询供应3号的顾客_现有一个商店的数据库,记录顾客及其购物情况,根据要求解答问题...
题目: 现有一个商店的数据库,记录顾客及其购物情况,由下面三个表组成: 商品product(商品号productid,商品名productname,单价unitprice,商品类别category,供 ...
- mysql统计age大于20的数_数据库命令记录
好记性不如烂笔头,每次看了忘,忘了看,这次做一个记录! 查看存在的数据库 mysql > show databases; 转到自己需要查看的数据库 mysql > use 数据库名; 查看 ...
- mysql查询集合中的特定数据_快速查询List中指定的数据
时间:2017/5/15 作者:李国君 题目:快速查询List中指定的数据 背景:当List中保存了大量的数据时,用传统的方法去遍历指定的数据肯定会效率低下,有一个方法就是类似于数据库查询那样,根据索 ...
- mysql查询10分钟内的数据库_十分钟了结MySQL information_schema
information_schema数据库是MySQL系统自带的数据库,它提供了数据库元数据的访问方式.感觉information_schema就像是MySQL实例的一个百科全书,记录了数据库当中大部 ...
最新文章
- 测试Animation大型动画文件拆分播放的可行性
- ubuntu ibus谷歌输入法安装
- SublimeText3系列(1)-安装、设置、快捷键、常用插件
- 数据结构探险——队列篇
- 1996.游戏中的弱角色的数量
- Oracle数据库学习(四):学习中的遇到的问题
- 重庆文件服务器,重庆filecoin服务器
- C#读写ISO15693协议ICODE2标签源码
- 树莓派_360wifi2_佳能MP236打印机
- CMD命令查看WiFi密码
- PCL中3D点云特征描述与提取(二)
- AndroidStudio很卡怎么办?
- VIL100数据集处理
- php 获取文件夹下面的文件列表和文件夹列表
- Ubuntu硬盘空间不足时,添加硬盘的方法
- 如何批量调整图片亮度?
- OSChina 周五乱弹 —— 黑披风的程序员和白围裙的产品经理彼此世代为仇
- 机器人企业如何在激流勇进的市场中,深耕落地,突出重围?
- 果园机器人能干什么_《果园机器人》教案
- lotus notes java_Lotus Notes邮件开发——JAVA(2) | 学步园