2016-08-04 142 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