Sql 在一个表上联接两列

Sql 在一个表上联接两列,sql,join,Sql,Join,我有一张表,上面有路由的地理信息。每条路线都有一个来源信息和目的地信息,我可以通过预定义的功能了解来源城市和目的地城市。 每条路线都有一个唯一的id,名为code,我想创建一个表,将源城市和目标城市显示在一起 我认为这可以通过内部连接来完成,但我不熟悉SQL,而且这段代码对我来说不适用 有人能帮我吗 select src.code , city1, city2 from (select data.code , provinces.name as city1 from data, provinc

我有一张表,上面有路由的地理信息。每条路线都有一个来源信息和目的地信息,我可以通过预定义的功能了解来源城市和目的地城市。 每条路线都有一个唯一的id,名为code,我想创建一个表,将源城市和目标城市显示在一起

我认为这可以通过内部连接来完成,但我不熟悉SQL,而且这段代码对我来说不适用

有人能帮我吗

select src.code , city1, city2 from 
(select data.code , provinces.name as city1 from data, provinces where st_within(st_geomfromwkb(data.src), provinces.geom)) as src
inner join (select select data.code , provinces.name as city2 from data, provinces where st_within(st_geomfromwkb(data.dst), provinces.geom)) as dst
on src.code = dst.code

您在第二个子查询中错误地重复了select,因为(作为建议)您不应该使用基于where和表名逗号分隔的过时联接语法

    select src.code 
        , src.city1
        , dst.city2 
    from (
        select data.code 
        , provinces.name as city1 
        from data
        INNER JOIN  provinces  ON  st_within(st_geomfromwkb(data.src), provinces.geom)
    )  src
    inner join (
         select data.code 
        , provinces.name as city2 
        from data
        INNER JOIN  provinces  ON st_within(st_geomfromwkb(data.dst), provinces.geom)
    )  dst on src.code = dst.code

您使用的是什么数据库?谢谢,现在可以正常工作了。但是,由于产量巨大,我如何根据城市1和城市2计算所有类型的产量?我想使用count(*)group by city1和City2,但没有适当的数据样本和预期结果,我无法为您提供正确的解决方案。。不管怎样,如果我的答案是正确的,请将其标记为已接受…看看这里如何