zoukankan      html  css  js  c++  java
  • Mysql中的GROUP_CONCAT使用

     SELECT
        res.ITRId Id,
        res.ITRResourceName ResourceName,
        res.ITRSupplierName SupplierName,
        res.ITRDeptCityName DeptCityName,
        res.ITRDeptAirportName DeptAirportName,
        res.ITRDataFlag DataFlag,
        res.ITRDeptCityId,
        res.ITRSupplierId,
        res.ITRTcManagerId,
        bus.ITFDestCityName DestCityName,
        bus.ITFDestAirportName DestAirportName,
        city.ITCTransPortCityName
        -- (select GROUP_CONCAT(city.ITCTransPortCityName separator  ',' ) TransportCityName from SGRInternationalTransportCity city where   city.ITCTransportId = res.ITRId) as TransportCityName
        FROM SGRInternationalTransportResources res
        left JOIN SGRInternationalTransportFlightResource bus ON res.ITRId = bus.ITFTransportId
        left JOIN SGRInternationalTransportCity city ON city.ITCTransportId = res.ITRId
        where res.ITRResourceType =2

    执行的结果如下:

    表联合查询后ID相同的存在多条记录;其他字段值均一样仅ITCTransPortCityName字段值不同;

    使用GROUP_CONCAT 优化后:

     SELECT
        res.ITRId Id,
        res.ITRResourceName ResourceName,
        res.ITRSupplierName SupplierName,
        res.ITRDeptCityName DeptCityName,
        res.ITRDeptAirportName DeptAirportName,
        res.ITRDataFlag DataFlag,
        res.ITRDeptCityId,
        res.ITRSupplierId,
        res.ITRTcManagerId,
        bus.ITFDestCityName DestCityName,
        bus.ITFDestAirportName DestAirportName,
        (select GROUP_CONCAT(city.ITCTransPortCityName separator  ',' ) TransportCityName from SGRInternationalTransportCity city where   city.ITCTransportId = res.ITRId) as TransportCityName
        FROM SGRInternationalTransportResources res
        left JOIN SGRInternationalTransportFlightResource bus ON res.ITRId = bus.ITFTransportId
        left JOIN SGRInternationalTransportCity city ON city.ITCTransportId = res.ITRId
        where res.ITRResourceType =2

    已经初步得到我们想要的结果了;可结果集还是三条记录,列表呈现依然存在问题...进一步优化如下:

    去除:

        left JOIN SGRInternationalTransportCity city ON city.ITCTransportId = res.ITRId

    得到结果如下:

    如果需要对 ITCTransPortCityName 这个字段进行查询该如何处理?用 like 么?使用 exists 进行处理

     and exists (select 1 from SGRInternationalTransportCity city where res.ITRId = city.ITCTransportId and city.ITCTransPortCityId=226 )    

    已成功筛选 城市ID为 226 的城市

  • 相关阅读:
    android apk 防止反编译技术第四篇-对抗JD-GUI
    程序猿的健康之路
    webkit浏览器常见开发问题
    解密H264、AAC硬件解码的关键扩展数据处理
    HTTPS与证书
    【微软大法好】VS Tools for AI全攻略(3):低配置虚拟机也能玩转深度学习,无需NC/NV系列
    【微软大法好】VS Tools for AI全攻略(2)
    【微软大法好】VS Tools for AI全攻略
    【写论文历程】这几天的一个小总结
    不得不承认pretty-midi很好用,以及一些简单的上手
  • 原文地址:https://www.cnblogs.com/zhangruiBlog/p/8421417.html
Copyright © 2011-2022 走看看