0

我有一个广告表,其中包含具有纬度和经度值的特色广告和非特色广告,当用户从某个位置明智地搜索广告距离时,我想在距离 500 公里以下的顶部显示特色广告选定的位置,以及所有其他广告距离明智到无限距离,然后是特色列表。

我可以先显示特色列表到无限距离,然后使用距离功能和按特色条款排序的其他剩余广告。但是如何使精选列表首先显示在 500 公里以下,然后将剩余的广告显示到无限距离。

我需要使用联合,还有其他解决方案吗?

源位置的

latitude = -37.814563
longitude = 144.970267
SELECT da.*,( 6371 * acos( cos(radians(144.970267)) * cos(radians(da.loc_lng)) * 
cos(radians(-37.814563) - radians(da.loc_lat)) + sin(radians(144.970267)) *  
sin(radians(da.loc_lng)) )) as distanceSort FROM directory_ads da WHERE da.approved = 1 
AND da.deleted = 0  ORDER BY da.featured DESC, distanceSort ASC
4

1 回答 1

1

您可以使用以下order by带有条件的子句来执行此操作:

order by (case when da.featured > 0 and DistanceSort < 500
               then distance_sort else 500
          end),
         DistanceSort
于 2013-05-30T01:11:48.103 回答