• MySQL的左连接查询,只取出最大的一条数据


    今天有个需求,是通过两张表进行查询。一对多的关系。通过一个主键,取出其中的一条。
    开始以为还好,直接用用了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函数
    python操作mysql之pymysql
    oracle 表分区
    Python连接sqlserver数据库之pymssql
    python-subprocess
    python-shutil
    python+logging
    公钥加密-DES-RSA
    python-Web-flask-蓝图和单元测试
  • 原文地址:https://www.cnblogs.com/brady-wang/p/10929778.html
Copyright © 2020-2023  润新知