【问题标题】:Mysql group by conflict records with order byMysql group by 与 order by 冲突记录
【发布时间】:2016-07-15 13:56:19
【问题描述】:

一张表包含经销商的多个地址(纬度和经度),但我想获取最近的经销商

这是一个查询,哪个返回适用于 order by 和 wheredealer=1 的单个经销商,但我需要多个唯一经销商。

检查查询和第一张图片结果

SELECT 

  *, ROUND(
    (
      3959 * ACOS(
        COS(RADIANS(41.355724)) * COS(
          RADIANS(adzip.dealer_zipcode_latitude)
        ) * COS(
          RADIANS(adzip.dealer_zipcode_longitude) - RADIANS(- 87.607332)
        ) + SIN(RADIANS(41.355724)) * SIN(
          RADIANS(adzip.dealer_zipcode_latitude)
        )
      )
    ), 2
  ) AS dealer_distance 
FROM
  ad_dealers_zipcodes AS adzip 
WHERE adzip.dealer_zipcode_dealer_id = 1 #GROUP BY adzip.dealer_zipcode_dealer_id
ORDER BY dealer_distance ASC 

当我通过 adzip.dealer_zipcode_dealer_id 添加组时,查询返回第 4 条记录,但我需要第 1 条结果记录,dealer_distance 为 13.80

【问题讨论】:

    标签: mysql group-by sql-order-by


    【解决方案1】:

    实际上,我认为您应该在查询中添加一个级别,以便 group by 语句按您的意愿工作,如下所示:

    SELECT *, min(dealer_distance) AS min_dealer_distance  FROM 
    (
        SELECT 
    
          *, ROUND(
            (
              3959 * ACOS(
                COS(RADIANS(41.355724)) * COS(
                  RADIANS(adzip.dealer_zipcode_latitude)
                ) * COS(
                  RADIANS(adzip.dealer_zipcode_longitude) - RADIANS(- 87.607332)
                ) + SIN(RADIANS(41.355724)) * SIN(
                  RADIANS(adzip.dealer_zipcode_latitude)
                )
              )
            ), 2
          ) AS dealer_distance 
        FROM
          ad_dealers_zipcodes AS adzip 
        WHERE adzip.dealer_zipcode_dealer_id = 1 #GROUP BY adzip.dealer_zipcode_dealer_id
        ORDER BY dealer_distance ASC 
    ) as t1
    GROUP BY dealer_zipcode_dealer_id
    ORDER BY min_dealer_distance ASC 
    

    【讨论】:

    • 非常感谢这是我想要的结果,但结果不是顺序所以我在GROUP BY dealer_zipcode_dealer_id 之后添加ORDER BY min_dealer_distance ASC
    • 对不起,我没有重点查询它的返回min_dealer_distance,但不是整行有序的经纬度?
    • 查询以select * 开头,它应该包含“t1”包含的所有内容,不是吗?你得到的东西有问题吗?
    猜你喜欢
    • 2013-01-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-06
    • 2021-02-22
    • 2011-07-18
    • 1970-01-01
    相关资源
    最近更新 更多