1.联系方式表-customer_contact

id email
1 123456@qq.com
2 987643@qq.com
3 hahaha@qq.com

2.发送邮件记录表-contact_send_info

id email_id email status create_time
1 1 123456@qq.com 1 2019-10-01
2 2 123456@qq.com 1 2019-10-02
3 3 123456@qq.com 2 2019-10-03

联系方式表还有记录OA账号的字段,记录表也有OA账号发送的状态;为了便于理解,简化了一些。

先说下,我当时出错的问题。

  起初,理解group by排序是按照by的条件排序后,取第一条数据。故写出了一下的错误SQL:

    select * from customer_contact c left join (

      select email,status from contact_send_info order by create_time desc

    ) temp on c.email = temp.email

  后来测试的时候发现查询出来的状态不是最近一次发送状态。

  经同事解释,是因为建表用的是innodb引擎,sql语句中没有order by的时候,默认主键id作为排序字段。

  按他的说法,那这里select email,status from contact_send_info order by create_time desc的排序没有起作用,当执行括号内的时候,按照create_time降序。再执行括号外的sql时,先前排序后的结果集temp又按照主键ID进行了第二次排序。在进行分组。导致结果不正确!

经过一番分析修改了SQL:

    select * from email_send_info e inner join (

      select email,MAX(create-time) maxtime from email_send_info group by email

    ) temp on e.email = temp.email and e.create_time = temp.maxtime

然后关联联系方式表得到每个联系方式的最近一次发送状态。

如果有更方便的写法,希望高手留言告知一下,谢谢了~

 

MYSQL:查询单表中不同邮箱最近一次发送状态的更多相关文章

  1. MySQL查询数据表中数据记录(包括多表查询)

    MySQL查询数据表中数据记录(包括多表查询) 在MySQL中创建数据库的目的是为了使用其中的数据. 使用select查询语句可以从数据库中把数据查询出来. select语句的语法格式如下: sele ...

  2. MySQL之单表查询 一 单表查询的语法 二 关键字的执行优先级(重点) 三 简单查询 四 WHERE约束 五 分组查询:GROUP BY 六 HAVING过滤 七 查询排序:ORDER BY 八 限制查询的记录数:LIMIT 九 使用正则表达式查询

    MySQL之单表查询 阅读目录 一 单表查询的语法 二 关键字的执行优先级(重点) 三 简单查询 四 WHERE约束 五 分组查询:GROUP BY 六 HAVING过滤 七 查询排序:ORDER B ...

  3. Mariadb/MySQL数据库单表查询基本操作及DML语句

    Mariadb/MySQL数据库单表查询基本操作及DML语句 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一数据库及表相关概述 1>.数据库操作 创建数据库: CREATE ...

  4. mysql(单表查询,多表查询,MySQl创建用户和授权,可视化工具Navicat的使用)

    单表查询 语法: 一.单表查询的语法 SELECT 字段1,字段2... FROM 表名 WHERE 条件 GROUP BY field HAVING 筛选 ORDER BY field LIMIT ...

  5. day 38 MySQL之单表查询

    MySQL之单表查询   阅读目录 一 单表查询的语法 二 关键字的执行优先级(重点) 三 简单查询 四 WHERE约束 五 分组查询:GROUP BY 六 HAVING过滤 七 查询排序:ORDER ...

  6. MySQL之单表多表查询

    #1.单表查询 #单表查询语法 select <字段1,字段2....> from <表名> where <表达式> group by field 分组 havin ...

  7. MySQL的单表查询

    单表查询 单表查询语法: select distinct 字段1,字段2... from 表名 where 条件 group by field having筛选 order by 关键字执行的优先级: ...

  8. 转: 从Mysql某一表中随机读取n条数据的SQL查询语句

    若要在i ≤ R ≤ j 这个范围得到一个随机整数R ,需要用到表达式 FLOOR(i + RAND() * (j – i + 1)).例如, 若要在7 到 12 的范围(包括7和12)内得到一个随机 ...

  9. 从Mysql某一表中随机读取n条数据的SQL查询语句

    若要在i ≤ R ≤ j 这个范围得到一个随机整数R ,需要用到表达式 FLOOR(i + RAND() * (j – i + 1)).例如, 若要在7 到 12 的范围(包括7和12)内得到一个随机 ...

随机推荐

  1. es6 -- 与解构赋值默认值结合使用

    参数默认值可以与解构赋值的默认值,结合起来使用. function foo({x, y = 5}) { console.log(x, y) } foo({}) // undefined 5 foo({ ...

  2. LVS是什么及作用?

    LVS的概念和重要性 LVS: 概念:是Linux Virtual Server的简写,意即Linux虚拟服务器,是一个虚拟的服务器集群系统 作用:举例 像有三个小区,但是工作的时间和休息的时间不一样 ...

  3. Codeforces Round #603 (Div. 2) C. Everyone is a Winner! (数学)

    链接: https://codeforces.com/contest/1263/problem/C 题意: On the well-known testing system MathForces, a ...

  4. 指针*和取地址&函数输入使用

    函数输入问题: 1 带&和不带& (参数本身还是拷贝一份参数) 2 函数输入指针 #include <iostream> using namespace std; int ...

  5. reids 数据库学习

    最近项目中用到了redis数据库,学习整理下 redis操作学习手册--key操作命令 http://www.cnblogs.com/stephen-liu74/archive/2012/03/26/ ...

  6. luogu_2831: 愤怒的小鸟

    洛谷2831:愤怒的小鸟(状压\(dp\)) 题意: 在二维平面上给定\(n\)个点\((1\leq n\leq18)\). 其中每个点用\((x_i,y_i)\)表示\((0<x_i,y_i& ...

  7. netflix conductor 学习(一)docker-compose 运行

    为了方便学习以及使用netflix conductor 基于官方的dockerfile,构建了server 以及ui 的容器镜像并push dockerhub 环境准备 官方docker-compos ...

  8. 鸿蒙OS与微内核

    目前主流面向个人端操作系统都不是像鸿蒙一样采用微内核的,或许在这些操作系统上诞生时面对的需求场景用微内核是行不通的.但在当前场景下是不是能走通要实际验证才知道.面对当前操作系统已成熟的市场生态.专利技 ...

  9. 计蒜客 41387.XKC's basketball team-线段树(区间查找大于等于x的最靠右的位置) (The Preliminary Contest for ICPC Asia Xuzhou 2019 E.) 2019年徐州网络赛

    XKC's basketball team XKC , the captain of the basketball team , is directing a train of nn team mem ...

  10. luogu P1447 [NOI2010]能量采集 欧拉反演

    题面 题目要我们求的东西可以化为: \[\sum_{i=1}^{n}\sum_{j=1}^{m}2*gcd(i,j)-1\] \[-nm+2\sum_{i=1}^{n}\sum_{j=1}^{m}gc ...