如何从表中选择唯一值并将其插入firebird中的另一个表?

时间:2013-03-22 08:31:03

标签: c# stored-procedures firebird

我在firebird中有两个表,其中一个表包含重复的ID,另一个表只包含唯一的表。所以,我想使用一个过程从duplicates表中选择唯一的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

谢谢你们。

3 个答案:

答案 0 :(得分:1)

如果你想获得有共同体的表格中的“唯一”ID列表,请使用DISTINCT,即

SELECT DISTINCT id FROM d

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

SELECT DISTINCT id FROM d WHERE NOT EXISTS(SELECT 1 FROM u WHERE u.id = d.id)

答案 1 :(得分: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

答案 2 :(得分:0)

有几种方法可以做到这一点。除了the answer of 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);