2017-09-14 74 views
0

我想更新列名稱字段與2行相同的字段爲空的列表,其中列中的郵政編碼爲空。從表中的值更新列空格

所以運輸郵編空白需要填寫相同的運輸郵編,其中名稱是相同的。

感謝

The attached is the table screenshot

+0

嘗試使用Google'sql中填寫完成具有前一行值的列,第一*四*結果是SO答案。 – blueCat

+0

你到目前爲止嘗試過什麼? – Eric

+0

我試過這個查詢:更新表s1 set s1.shipping_zip =(從表中選擇shipping_zip其中Name = Name);但它給出了一個錯誤,說不能使用語句 –

回答

0

您沒有提供實際的表名。我將使用table_name作爲向您顯示要執行的操作的一種方式。我正在使用table_name兩次,所以每次給它一個別名m & f)。這樣我們就可以做比較

慢答案

UPDATE table_name m 
SET m.shipping_zip = 
    (SELECT f.shipping_zip 
    FROM table_name f 
    WHERE f.Name=m.Name and f.shipping_zip<>'') 
WHERE m.shipping_zip = ''; 

快速的答案(但未經測試)

UPDATE table_name m, table_name f 
SET m.shipping_zip = f.shipping_zip 
WHERE m.Name=f.Name AND m.shipping_zip='' AND f.shipping_zip<>''; 
+0

我假設你使用兩個表 - m和f。我正在嘗試在表格中執行此操作,使用沒有空白(zipcode)的列中的數據並將該數據移動到空白列中 –

+0

不,我使用一個表格,但給了它兩個不同的名稱,以便我們可以比較並採取行動。這在SQL中是一個巧妙的技巧。你沒有提供表名,所以我在裏面放了一個通用的table_name。 –

+0

它引發了一個錯誤代碼1093,你不能指定目標表m更新從子句...沒有工作 –

0

這可以這樣

update `table` t, (select * from `table` 
where shipping_zip is not null and shipping_zip != '')q 
set t.shipping_zip = q.shipping_zip 
where t.Name = q.Name; 
+0

確實SQL允許您使用從「表」在select語句中? –

+0

這裏「table」是你的表的名字。用實際的表名替換它。我在示例表中試用了這個確切的查詢。它工作得很好。 – codeslayer1

+0

它引發了一個錯誤代碼1175,說你正在使用安全更新模式,並試圖更新一個表,而沒有使用一個關鍵列的地方..我不知道什麼是所有關於 –