如何从表中选择唯一值并将其插入到另一个表中
本文关键字:插入 另一个 唯一 选择 | 更新日期: 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);