2015-02-24 63 views
0

我有2个表格:customers(customer,city_name,postal_code)和postal_codes(city_name,postal_code)。从另一个表格的数据更新表

在客户表中,邮政编码条目丢失,但城市在那里。

如何更新postal_codes表中的customers表,以便在缺少postal_code的customers表中更新丢失的postal_code?

这可能是重复的,但我无法使任何来自类似线程的建议工作。他们都使用某种缩写来表格名称,我觉得很难遵循。

试过,但它似乎不工作:

UPDATE customers 
SET  postal_code = postal_codes.postal_code 
FROM postal_codes.postal_code INNER JOIN postal_codes.city_name ON customers.city_name 

回答

0

至于我记得SQLite不支持update ... from join语法,但此查询应该为你工作:

UPDATE customers 
SET postal_code = (
    SELECT postal_codes.postal_code 
    FROM postal_codes 
    WHERE postal_codes.city_name = customers.city_name 
) 
WHERE EXISTS (
    SELECT * 
    FROM postal_codes 
    WHERE postal_codes.city_name = customers.city_name 
    AND postal_codes.postal_code <> customers.postal_code 
); 
+0

它确实不工作....它执行但不更新。 – user3927897 2015-02-24 15:55:45

+0

@ user3927897 AFAIK此语法应与SQLite一起使用;尝试在结尾处删除'AND postal_codes.postal_code <> customers.postal_code',看看它是否能够正常工作。 – jpw 2015-02-24 16:00:29

+0

@ user3927897你确定剩下的约1700行的表格之间有city_names匹配吗? – jpw 2015-02-24 16:21:42

相关问题