由其他PostgreSQL更新表的字段

时间:2017-10-25 09:59:34

标签: postgresql

我有两张桌子

  

表1:

CREATE TABLE public.my_line
(
    id bigint NOT NULL,
    geom geometry,
    name character varying(254) COLLATE pg_catalog."default",
    CONSTRAINT my_line_pkey PRIMARY KEY (id)
)
  

表2:

CREATE TABLE public.ligne
(
    id integer NOT NULL DEFAULT nextval('ligne_id_seq'::regclass),
    name text COLLATE pg_catalog."default",
    geom geometry,
    CONSTRAINT ligne_pkey PRIMARY KEY (id)
)

我用第一个更新第二个,像这样:

update ligne set 
name = my_line.name 
from my_line 
where ligne.id = my_line.id

它运行良好,但我想要做的是只能更新两个表之间差异的行。如果你有一个想法在我身上。 热忱。

1 个答案:

答案 0 :(得分:1)

您需要检查WHERE子句中它们是否不同。试试这样:

UPDATE ligne
SET name = my_line.name
FROM my_line
WHERE ligne.id = my_line.id
AND ligne.name <> my_line.name
-- and whatever else you want to check for