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

本文关键字:插入 另一个 唯一 选择 | 更新日期: 2023-09-27 18:05:10

我在firebird中有2个表,其中一个表包含重复的ID,另一个表仅包含唯一的ID。因此,我想使用一个过程从duplicate表中选择惟一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

谢谢。

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

如果您想获得表中存在重复项的"唯一" id列表,则使用DISTINCT,即

SELECT DISTINCT id FROM d

现在,如果您想进一步将结果集限制为具有id的记录尚未在"唯一表"中,要么连接表或使用NOT EXISTS ie

SELECT DISTINCT id FROM d WHERE NOT EXISTS(SELECT 1 FROM u WHERE u.id = d.id)
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

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