2017-09-14 41 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,说你正在使用安全更新模式,并试图更新一个表,而没有使用一个关键列的地方..我不知道什么是所有关于 –