dpnru86024 2013-07-16 14:57
浏览 63
已采纳

SQL'Group By'子句更改数组结果

For some reason I am getting different results when I use a group by clause in the DISTANCE area. When I use GROUP BY I am able to consolidate all my cable numbers correctly, but then the distances seems to be different than if I don't use the GROUP BY clause...

GROUP:

SELECT cable_no,
       3959.0 * 5280.0 * acos(sin(radians($lat)) * sin(radians(mh_lat_a))
       + cos(radians($lat)) * cos(radians(mh_lat_a))
       * cos(radians(mh_long_a) - radians($lon))) as distance
 FROM extraction_worksheet
 WHERE mh_lat_a != ''
 GROUP BY cable_no
 HAVING distance <= $radius

 [{"cable_no":"90017","distance":"1604.6550964957787"},{"cable_no":"90018","distance":"41.09618442526487"}]

Regular

SELECT cable_no, section_no,
      3959.0 * 5280.0 * acos(sin(radians($lat)) * sin(radians(mh_lat_a))
      + cos(radians($lat)) * cos(radians(mh_lat_a))
      * cos(radians(mh_long_a) - radians($lon))) as distance
FROM extraction_worksheet
WHERE mh_lat_a != ''
HAVING distance <= $radius

[{"cable_no":"80010","section_no":"9","distance":"1398.9443263587134"},{"cable_no":"80010","section_no":"8","distance":"1669.0854859250592"},{"cable_no":"90017","section_no":"1","distance":"1604.6550964957787"},{"cable_no":"80010","section_no":"7","distance":"1831.1275113138754"},{"cable_no":"80010","section_no":"10","distance":"917.955911900792"},{"cable_no":"80017","section_no":"7","distance":"1788.0906282411715"},{"cable_no":"80017","section_no":"8","distance":"1685.9977194337882"},{"cable_no":"80017","section_no":"9","distance":"1544.2115596354815"},{"cable_no":"80017","section_no":"10","distance":"869.511708783779"},{"cable_no":"80010","section_no":"11","distance":"479.2133866402672"},{"cable_no":"80017","section_no":"11","distance":"428.6618645292709"},{"cable_no":"90018","section_no":"1","distance":"41.09618442526487"}]
  • 写回答

1条回答 默认 最新

  • dongmu5106 2013-07-16 16:31
    关注

    The Group By clause consolidates the matched rows into one row. Thus when you are grouping on the cable_no you get two rows, since you have two unique cable_no (80010 and 90017).

    For you drop down if you wanted to eliminate duplicates you should use the unique clause on the field that you want to filter duplicates for.

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 chaquopy python 安卓
  • ¥50 Kubernetes&Fission&Eleasticsearch
  • ¥15 CSS实现渐隐虚线框
  • ¥15 有没有帮写代码做实验仿真的
  • ¥15 報錯:Person is not mapped,如何解決?
  • ¥30 vmware exsi重置后登不上
  • ¥15 易盾点选的cb参数怎么解啊
  • ¥15 MATLAB运行显示错误,如何解决?
  • ¥15 c++头文件不能识别CDialog
  • ¥15 Excel发现不可读取的内容