我在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
谢谢你们。
答案 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);