好吧,我有一个名为“Lov(值列表)”的表,它具有以下结构:
CREATE TABLE lov
(
tipo integer NOT NULL,
id serial NOT NULL,
codigo character varying(255),
descricao character varying(255),
CONSTRAINT lov_pkey PRIMARY KEY (id )
)
我有另一个名为lov_tmp的表,其结构与上面相同,这两个表之间唯一的区别是lov_tmp包含来自中央数据库的原始数据,而lov包含来自本地数据库的数据。
我需要比较这2个表,找到值: 1-插入lov_tmp并且没有在lov中, 2-更改/更新了lov_tmp并且没有在lov中, 3-在lov_tmp中删除但没有在lov中删除。
我无法比较ID(PK),因为它们在每个数据库中都是不同的,我只能比较“codigo,tipo和descricao”列。
一些想法?
答案 0 :(得分:0)
如果您拥有的任何字段(codigo,tipo和descricao)可以用作唯一键或复合键...您可以选择进入temp,过滤掉那些没有的存在于一个(或另一个)
不确定postgressql语法的外观如何,但这里是从一个不在另一个表中选择临时内容的基本思路。
SELECT
l.*
INTO
#someTempTable
FROM
lov l
WHERE NOT EXISTS
(SELECT <<someUniqueOrCompositeKey>> FROM lov_tmp)
这会告诉你哪些行不匹配。