-1

我在 firebird 中有 2 张表,其中一张表包含重复的 ID,而另一张表只有唯一的。所以,我想使用一个过程从重复表中选择唯一 ID 并将它们插入到唯一表中。但是,我真的不知道怎么做,有人可以帮助我吗?

编辑:这是一个例子:

有2张桌子

             ## GASFLESSEN ##            
ID CODE SUCCESS TARE_WEIGHT FILLING_NOZZLE      //< Column "CODE" contains those unique ID's.

           ## READINGS ##
      ID CODE_ID READING_TIME                   //< Column "CODE_ID" contains the duplicate ID's

多谢你们。

4

3 回答 3

1

如果您想在有重复项的表中获取“唯一”ID-s 列表,请使用DISTINCT,即

SELECT DISTINCT id FROM d

现在,如果您想进一步将结果集限制为id“唯一表”中尚未包含的记录,请加入表或使用NOT EXISTSie

SELECT DISTINCT id FROM d WHERE NOT EXISTS(SELECT 1 FROM u WHERE u.id = d.id)
于 2013-03-22T09:06:11.743 回答
0
procedure CopyUniqueFromData;
declare var_id integer;
  for 
    select distinct id from d into :var_id 
  do begin
    insert into u (id) values (:var_id);
  end
end
于 2013-03-22T11:07:31.150 回答
0

有几种方法可以做到这一点。除了ain 的答案之外,还可以使用MERGE

MERGE INTO table_unique
    USING (SELECT DISTINCT id FROM table_duplicates) src
    ON table_unique.id = src.id
    WHEN NOT MATCHED THEN 
        INSERT (id) values (src.id);
于 2013-03-23T09:10:11.013 回答