今天有个需求,是通过两张表进行查询。一对多的关系。通过一个主键,取出其中的一条。
开始以为还好,直接用用了left join on进行查询。却发现了问题所在。
其他的好弄。
开始的写法借鉴这篇博客:
https://bbs.csdn.net/topics/350134616?tdsourcetag=s_pcqq_aiomsg

没能解决问题,因为取出的数据中不是我想要的最新的,而是最小的ID的那个。
为什么会这样呢,了解了才知道,说是group by 分组取出的是按照最小的取出的,我也很绝望!
接下来参照了这个SQL:

SELECT ID,USER_ID,problems,last_updated_date FROM (select * from t_iov_help_feedback order by USER_ID, LAST_UPDATED_DATE DESC) b
GROUP BY b.USER_ID;

参照的是这篇博客:
https://blog.csdn.net/u012660464/article/details/78605078?tdsourcetag=s_pcqq_aiomsg
很郁闷的是,他的博客,他最后取出了最大的值,而我却依旧没有最大值。因为这篇博客的原理就是因为group by取出的是最小的,所以它就先按照ID查出最大的。很显然,又失败了!!!
这个时候,已经弄了一下午,快下班了。
于是又继续看网上的一些博客。
找到了最原始的写法,于是按照最原始的写法:
语法格式是:

SELECT * FROM TABLE WHERE ID IN (SELECT MAX(ID) FROM TABLE GROUP BY [去除重复的字段名列表,....])
1
参照这个格式,去重的写法。进行分组。

最终,达到了我想要的结果。

SELECT
REVISIT_ID,
CONSULTATION_ID,
RESULT_NAME,
REVISIT_TIME
FROM
tb_cloud_consultation_revisit
WHERE REVISIT_ID IN
(SELECT
MAX(REVISIT_ID)
FROM
tb_cloud_consultation_revisit
GROUP BY CONSULTATION_ID )

博客源于:
https://blog.csdn.net/hd243608836/article/details/80088173
接下来就可以很简单的完成剩下的部分了:

SELECT
a.`CONSULTATION_ID` AS consultationId,
a.CONSULTATION_NAME AS consultationName,
a.CONSULTATION_PHONE AS consultationPhone,
a.CONSULTATION_DATE AS consultationDate,
a.MODE_NAME AS modeName,
a.`CHANNEL_NAME` AS channelName,
a.INTENTION_NAME AS intentionName,
a.REASON_NAME AS reasonName,
a.`PENSION_CARD` AS pensionCard,
a.REMARK AS remark,
a.PENSION_NAME AS pensionName,
a.ABILITY_NAME AS abilityName,
b.RESULT_NAME AS resultName
FROM
tb_cloud_consultation a
LEFT JOIN
(SELECT
REVISIT_ID,
CONSULTATION_ID,
RESULT_NAME,
REVISIT_TIME
FROM
tb_cloud_consultation_revisit
WHERE REVISIT_ID IN
(SELECT
MAX(REVISIT_ID)
FROM
tb_cloud_consultation_revisit
GROUP BY CONSULTATION_ID )
) b
ON b.`CONSULTATION_ID` = a.`CONSULTATION_ID`

MySQL的左连接查询,只取出最大的一条数据的更多相关文章

  1. MySql数据库之连接查询

    在MySql数据库中连接查询分为以下几种方式: 1.内连接查询 内连接查询通过关键字 inner join 关键字来实现,通过代码实现: select * from 表1 inner join 表2 ...

  2. 深入浅出:MySQL的左连接、右连接、等值连接

    深入浅出:MySQL的左连接.右连接.等值连接 三种连接的语法 为便于更多的技友快速读懂.理解,我们只讨论2张表对象进行连接操作的情况,大于2张表对象进行的连接操作原理也是一样的. 1.左连接(LEF ...

  3. Mysql 连接查询 Mysql支持的连接查询有哪些

    CREATE TABLE `chx` (   `id` VARCHAR(20) NOT NULL,   `name` VARCHAR(50) DEFAULT NULL,   `name2` CHAR( ...

  4. SQL左连接查询 left join ... on

    左连接查询 保留左边主表的所有行(即使在右表没有匹配的行),右表输出满足 on 条件的行,不满足的输出null   示例:组合两个表 - 力扣 表1: Person +--------------+- ...

  5. mysql left join 左连接查询关联n多张表

    left join 左连接即以左表为基准,显示坐标所有的行,右表与左表关联的数据会显示,不关联的则不显示.关键字为left join on. **基本用法如下: select table a left ...

  6. 【连接查询】mySql多表连接查询与union与union all用法

    1.准备两个表 表a: 结构: mysql> desc a; +-------+-------------+------+-----+---------+-------+ | Field | T ...

  7. mysql之左连接、右连接、内连接、全连接、等值连接、交叉连接等

    mysql中的各种jion的记录,以备用时查 1.等值连接和内连接, a.内连接与等值连接效果是相同的,执行效率也相同,只是书写方式不一样,内连接是由SQL 1999规则定的书写方式 比如: sele ...

  8. MySQL 使用左连接替换not in

    众所周知,左连接和右连接的含义是以哪一张表为准. 左连接就是以左表为准,查出的结果中包含左表所有的记录,如果右表中没有与其对应的记录,那么那一行记录中B表部分的内容就全是NULL. 现在有两个表,一个 ...

  9. 深入浅出:MySQL的左连接、右连接、内连接

    http://blog.csdn.net/wyzxg/article/details/7276979 三种连接的语法 为便于更多的技友快速读懂.理解,我们只讨论2张表对象进行连接操作的情况,大于2张表 ...

随机推荐

  1. 怎么去检测浏览器支不支持html5和css3?

    HTML5, CSS3 以及其他相关技术例如 Canvas.WebSocket 等等将 Web 应用开发带到了一个新的高度. 该技术通过组合 HTML.CSS 和 JavaScript 可以开发出桌面 ...

  2. 一百二十五:CMS系统之首页轮播实现

    把base模板分为左右两块版心 .main-container{ /*整体版心*/ width: 990px; margin: 0 auto; overflow: hidden;}.lg-contai ...

  3. 建立Maven工程时出错,Failure to transfer

    建立Maven工程时出错,Failure to transfer com.thoughtworks.xstream:xstream:jar:1.3.1 Failure to transfer com. ...

  4. json xml 传值方法

    1.xml传值 xml传值的方式更加的安全. <id>1</id> <name>tom</name> 报文 2.JSON传值 JOSN的格式:3种 1. ...

  5. 【VS开发】单文档中往视图中加入控件

    [VS开发]单文档中往视图中加入控件 标签(空格分隔): [VS开发] 分隔视图的但文档窗口,要显示控件,推荐使用CFormView或者CCtrlView,前者和对话框的做法一致. 在MainFram ...

  6. 用Blackbox Exporter to Monitor web和端口

    1.按照exporter .wget https://github.com/prometheus/blackbox_exporter/releases/download/v0.12.0/blackbo ...

  7. SpringBoot整合持久层技术-创建项目

    新建项目 Pom.xml文件 <?xml version="1.0" encoding="UTF-8"?> <project xmlns=&q ...

  8. mysql oracle postgresql 体系架构对比

    2个角度sqlservermysqloracle 12cpostgresql如果从create database角度来看 那么一个实例是可以对应多个数据库的~如果从实例和磁盘上的数据库文件(数据文件. ...

  9. Linux就该这么学——新手必须掌握的命令之系统状态检测命令组

    ifconfig命令 用途 : 获取网卡配置与网络状态等信息 格式 : ifconfig[网络设备][参数] 其实主要查看的就是网卡名称,inet参数后面的IP地址,ether参数后面的网卡物理地址( ...

  10. Linux目录结构解释

    Linux的常用命令 cp: 用于文件复制的命令. cp file_1 file_2 copy_position -v: 复制的详细过程. -r: 复制目录. mv: 文件移动或文件重命名. mv f ...