这几天在查询购买记录,其中一个需求就是查出来客户首次购买的产品时间和产品名称。说白了,就是在一段时间内,去取出来用户的第一次购买记录,再清楚一些就是在一堆重复的记录中取出第一条购买记录。

这个问题捉只让我困扰了一段时间,自己最存储过程还是不能驾轻就熟,所以还是得按照传统的方法来进行查询了。

要查询的记录如下:

而我们要取出来的记录如下:

事实上,这样的记录如果取出来第一条记录还是比较好取的,因为这里面有购买时间,我们可以根据购买时间,来取出首次购买的记录。同一个用户,购买的时间最早的,就是首次购买产品。

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 查询重复记录 取第一条_取出重复记录的第一条相关推荐

  1. mysql 查询相同字段值的个数_好文 | MySQL 索引B+树原理,以及建索引的几大原则...

    MySQL事实上使用不同的存储引擎也是有很大区别的,下面猿友们可以了解一下. 一.存储引擎的比较 注:上面提到的B树索引并没有指出是B-Tree和B+Tree索引,但是B-树和B+树的定义是有区别的. ...

  2. mysql查询一个表有哪些索引_如何查看某张数据库表上都有哪些索引(转)

    索引使用简介 一. 关于索引的知识 要写出运行效率高的sql,需要对索引的机制有一定了解,下面对索引的基本知识做一介绍. 1. 索引的优点和局限 索引可以提高查询的效率,但会降低dml操作的效率. 所 ...

  3. 查询数据 抓取 网站数据_有了数据,我就学会了如何在几个小时内抓取网站,您也可以...

    查询数据 抓取 网站数据 I had a shameful secret. It is one that affects a surprising number of people in the da ...

  4. mysql查询结果随机取一个_从SQL查询结果随机取一条数据

    最近工作中会涉及复杂的SQL语句,还是挺有意思的.以前想写没有应用场景,现在正好可以多锻炼锻炼.我觉得在实际开发中,程序代码并不是最难的,最难的还是SQL.SQL逻辑性最强,而且还要很清楚表设计,业务 ...

  5. mysql 查询不为0的数据_查询数据库中所有记录总数不为0的数据表名称

    [如何查询postgreSQL 里面某个数据库中所有用户定义的数据表的名字@forandever 2011-11-131.通过命令行查询\d 数据库  -- 得到所有表的名字\d 表名  -- 得到表 ...

  6. mysql查询供应3号的顾客_现有一个商店的数据库,记录顾客及其购物情况,根据要求解答问题...

    题目: 现有一个商店的数据库,记录顾客及其购物情况,由下面三个表组成: 商品product(商品号productid,商品名productname,单价unitprice,商品类别category,供 ...

  7. mysql统计age大于20的数_数据库命令记录

    好记性不如烂笔头,每次看了忘,忘了看,这次做一个记录! 查看存在的数据库 mysql > show databases; 转到自己需要查看的数据库 mysql > use 数据库名; 查看 ...

  8. mysql查询集合中的特定数据_快速查询List中指定的数据

    时间:2017/5/15 作者:李国君 题目:快速查询List中指定的数据 背景:当List中保存了大量的数据时,用传统的方法去遍历指定的数据肯定会效率低下,有一个方法就是类似于数据库查询那样,根据索 ...

  9. mysql查询10分钟内的数据库_十分钟了结MySQL information_schema

    information_schema数据库是MySQL系统自带的数据库,它提供了数据库元数据的访问方式.感觉information_schema就像是MySQL实例的一个百科全书,记录了数据库当中大部 ...

最新文章

  1. 测试Animation大型动画文件拆分播放的可行性
  2. ubuntu ibus谷歌输入法安装
  3. SublimeText3系列(1)-安装、设置、快捷键、常用插件
  4. 数据结构探险——队列篇
  5. 1996.游戏中的弱角色的数量
  6. Oracle数据库学习(四):学习中的遇到的问题
  7. 重庆文件服务器,重庆filecoin服务器
  8. C#读写ISO15693协议ICODE2标签源码
  9. 树莓派_360wifi2_佳能MP236打印机
  10. CMD命令查看WiFi密码
  11. PCL中3D点云特征描述与提取(二)
  12. AndroidStudio很卡怎么办?
  13. VIL100数据集处理
  14. php 获取文件夹下面的文件列表和文件夹列表
  15. Ubuntu硬盘空间不足时,添加硬盘的方法
  16. 如何批量调整图片亮度?
  17. OSChina 周五乱弹 —— 黑披风的程序员和白围裙的产品经理彼此世代为仇
  18. 机器人企业如何在激流勇进的市场中,深耕落地,突出重围?
  19. 果园机器人能干什么_《果园机器人》教案
  20. lotus notes java_Lotus Notes邮件开发——JAVA(2) | 学步园

热门文章

  1. 写给那些想要自学成才的Java程序员
  2. MySQL总结二 宽字节注入
  3. Moving Swiftly(从OC切换到Swift)
  4. UML类图和关系--idea使用PlantUML插件画类图
  5. java实现多功能记事本
  6. 转行学什么技术最赚钱?选择Python,你绝对不会后悔
  7. 读书的归纳和总结方法
  8. zabbix-server通过zabbix-proxy代理监控主机,新手小白教程
  9. 单片机c语言程序设计中可以不分大小写,论单片机课程教学中C语言编程的规范性...
  10. mpeg2视频解码标准简介