2016-08-04 199 views
0

有谁知道更新左外连接表的好参考吗?更新左外连接表

是否在执行左外部联接之前创建希望存储的列然后填充列?

我希望将segmentspatialdata存储在新表中,或者将行添加到包含segmentspatialdata值的现有表中,但我不确定插入语句将在哪里执行,如果我这样做的话。

SELECT 
    a.rowid, 
    a.Season, 
    a.Name, 
    a.Latitude, 
    a.Longitude, 
    b.rowid, 
    b.Season, 
    b.Name, 
    b.Latitude, 
    b.Longitude, 
    CAST('LINESTRING(' + a.Longitude +' '+ a.Latitude +', '+ 
    b.Longitude +' '+ b.Latitude + ')' AS GEOGRAPHY) AS segmentspatialdata 
FROM 
    hurracane a 
LEFT OUTER JOIN 
    hurracane b 

ON  
    b.rowid = a.rowid + 1 
    AND b.season = a.season 
    AND b.name = a.name 

WHERE 
    b.rowid IS NOT NULL 
ORDER BY a.rowid 

1

+0

你为什么不使用'UPDATE FROM'? – NEER

+0

我不熟悉“更新左外连接的表”。你能否进一步解释?在你的示例查询中,你想更新哪一列? –

+0

这使得它成为一个常规的连接“其中b.rowid不是NULL”。 – Paparazzi

回答

0

其中b.rowid IS NOT NULL
使得常规连接

insert into table (segmentspatialdata) 
SELECT CAST('LINESTRING(' + a.Longitude +' '+ a.Latitude +', '+ 
b.Longitude +' '+ b.Latitude + ')' AS GEOGRAPHY) AS segmentspatialdata 
FROM 
    hurracane a 
join 
    hurracane b 
    ON b.rowid = a.rowid + 1 
    AND b.season = a.season 
    AND b.name = a.name 
+0

嘿Pap,这是一个新的查询,还是应该用你写的代码替换我的代码?有一个失踪的parathensis。如果我像上面那样添加列,那么我得到:INSERT语句的选择列表包含比插入列表更多的项目。 SELECT值的数量必须与INSERT列的数量相匹配。 如何整齐地在评论中显示代码? – Nusc

+0

@Nusc你的问题不清楚。这将是“我希望在一张新表中存储segmentspatialdata”的答案。 – Paparazzi

+0

那么工作谢谢你 – Nusc