Sql 插入到具有不同(控件重复)的一列中

Sql 插入到具有不同(控件重复)的一列中,sql,postgresql,sql-insert,greatest-n-per-group,Sql,Postgresql,Sql Insert,Greatest N Per Group,您好,我有15000条记录的表,我需要在一列中插入其他不重复的表记录 这是我的sql: INSERT INTO ceny_min2(id, idt, kod_k, nrdok, data_z, odczytano, ost_update, cena_min) SELECT * FROM cenymin WHERE id IN ( SELECT MIN(id) FROM cenymin WHERE (SELECT distinct i

您好,我有15000条记录的表,我需要在一列中插入其他不重复的表记录

这是我的sql:

INSERT INTO ceny_min2(id, idt, kod_k, nrdok, data_z, odczytano, ost_update, cena_min) 
SELECT * 
FROM cenymin 
WHERE id IN (
         SELECT MIN(id) 
         FROM cenymin 
         WHERE (SELECT distinct idt FROM cenymin)
    )

idt-是我只需要检查和翻转第一个记录的列

错误:

错误:WHERE的参数必须是boolean类型,而不是integer类型 **********Błd********** 错误:WHERE的参数必须是boolean类型,而不是integer类型 斯坦SQL:42804
我怀疑你想要:

insert into ceny_min2(id, idt, kod_k, nrdok, data_z, odczytano, ost_update, cena_min) 
select id, idt, kod_k, nrdok, data_z, odczytano, ost_update, cena_min
from cenymin c
where c.id = (select min(id) from cenymin c1 where c1.idt = c.idt)
这将为您提供每个idt具有较小id的行

您还可以使用窗口函数来表达这一点:

insert into ceny_min2(id, idt, kod_k, nrdok, data_z, odczytano, ost_update, cena_min) 
select id, idt, kod_k, nrdok, data_z, odczytano, ost_update, cena_min
from (
    select c.*, row_number() over(partition by idt order by id) rn
    from cenymin c
) c
where rn = 1
或带有不同的on:


这篇评论太长了

如果要防止表中出现重复项,则应使用唯一约束或索引。然后,如果要执行插入,请使用on conflict ignore:


我会建议使用特定的语法,但我无法理解您真正想要做什么。

您可以添加示例数据来帮助解释您在这里要实现的目标吗?在哪里???在SelectIDT fromCenyminthanks中,我得到了我想要的结果:!欢迎@KamilRadosz。如果我的答案正确回答了你的问题,那么点击复选标记。。。谢谢
insert into ceny_min2(id, idt, kod_k, nrdok, data_z, odczytano, ost_update, cena_min) 
select distinct on (idt) id, idt, kod_k, nrdok, data_z, odczytano, ost_update, cena_min
from cenymin c
order by idt, id
insert into ceny_min2 (id, idt, kod_k, nrdok, data_z, odczytano, ost_update, cena_min) 
    select * 
    from cenymin 
    on conflict on constraint <unique constraint> do nothing;