SQL重复数据

select distinct
t.lo_num '经度1',
t.la_num '纬度1',
t.short_str '名称1',
'距离(Km)' 'jl',
A1.lo_num '经度2',
A1.la_num '纬度2',
A1.proj_str '名称2',
e.jl as '距离'
from dc_tproject_d t left join dc_market_tproj_f f on t.proj_id = f.proj_id
left join
(
select distinct
proj_id,
lo_num,
la_num,
short_str 'proj_str'
from dc_tproject_d
union all
select distinct
tproj_id 'proj_id',
lo_num,
la_num,
proj_str
from dc_cproject_d
) A1 on t.proj_id = A1.proj_id
left join
(SELECT distinct
proj_id,
ROUND(
6378.137*2*ASIN(SQRT(power(SIN((la_num2-la_num1)/2),2)+COS(la_num2)*COS(la_num1)*power(SIN((lo_num2-lo_num1)/2),2) ) )
,1)
as jl
FROM
(
    select distinct
    proj_id,
    lo_num_t* PI() / 180 as lo_num1,
    lo_num_c* PI() / 180 as lo_num2,
    la_num_t* PI() / 180 as la_num1,
    la_num_c* PI() / 180 as la_num2
    from(
            SELECT distinct
            t.proj_id,t.lo_num AS lo_num_t,t.la_num AS la_num_t,c.lo_num AS lo_num_c,c.la_num AS la_num_c from dc_tproject_d t left join dc_cproject_d c on t.proj_id = c.tproj_id
        ) a
) b
) e on t.proj_id = e.proj_id
where
t.region_id = '${region_id}'
and
t.city_id = '${city_id}'
and
t.proj_id = '${proj_id}'
and len(t.lo_num) <> 0
and len(t.la_num) <> 0
and len(A1.lo_num) <> 0
and len(A1.la_num) <> 0

image.png



我这个写出来数据重复太多了,帮忙改一下,不要有重复数据


拿这个结果集说:

应该有四条数据

烟台玖熙墅-->烟台玖熙墅,距离:0

烟台玖熙墅-->磁山温泉小镇,距离:??

烟台玖熙墅-->招商马尔贝拉,距离:??

烟台玖熙墅-->龙湖葡醍海湾,距离:??

孟祥运 发布于 2019-3-10 13:36 (编辑于 2019-3-10 16:04)
1min目标场景问卷 立即参与
回答问题
悬赏:4 F币 + 添加悬赏
提示:增加悬赏、完善问题、追问等操作,可使您的问题被置顶,并向所有关注者发送通知
共2回答
最佳回答
5
qianxu1996Lv1见习互助
发布于2019-3-10 15:43

截图内并没有两行完全相同的记录,你的重复指的是什么?
你最后查询只用到了t,A1,e三张表中的结果,全部是根据proj_id进行关联,但是看截图,你的t.proj_id,是不是能找到多条A1.project_id与之对应?

  • 孟祥运 孟祥运(提问者) 名称2里有四个名称,就应该是四条数据(其中包含名称1),现在算出了3个距离,但现在无法与名称匹配,不知道后面的距离是名称1到到哪个名称2
    2019-03-10 16:00 
  • 孟祥运 孟祥运(提问者) 我刚刚完善了一下问题,你再看看
    2019-03-10 16:04 
  • qianxu1996 qianxu1996 回复 孟祥运(提问者) 应该是e.jl,出现了多条与T、A1能对应的上的记录,正常的话,你A1和E表应该通过一个条件列关联起来,看起来像是你将E表与T表的proj_id关联上了, T表中烟台玖熙墅,在A1表中能找到4条记录与它匹配,在E表中也能找到3条记录与之匹配,就形成了12条记录。 正常情况下,烟台玖熙墅-->磁山温泉小镇,只会有一个距离与它对应,你截图里出现了三个。一定是你的E表与前表的连接条件不对。给E表加限制条件吧,不但E.proj_id(我理解是起点项目ID)需要与前表相同,且终点项目ID同样需要=A1表中能区分终点项目的列
    2019-03-10 16:16 
最佳回答
0
城落满芯Lv6中级互助
发布于2019-3-10 13:43

任何一个子SQL都有可能重复,还是每个子SQL 去检查吧

  • 3关注人数
  • 566浏览人数
  • 最后回答于:2019-3-10 16:04
    请选择关闭问题的原因
    确定 取消
    返回顶部