从 postgresql 中选择不同的查询插入表

Kws*_*ost 0 postgresql

我有一个包含 33 列的表,其中有多个重复项,因此我试图以这种方式删除所有重复项,因为此选择不同的查询具有正确的数据数量。

    CREATE TABLE students (
school char(2),sex char(1),age int,address char(1),famsize char(3),
Pstatus char(1),Medu int,Fedu int,Mjob varchar,Fjob varchar,reason varchar,
guardian varchar,traveltime int,studytime int,failures char(1),
schoolsup varchar,famsup varchar,paid varchar,activities varchar,
nursery varchar,higher varchar,internet varchar,romantic varchar,
famrel int,freetime int,goout int,Dalc int,Walc int,
health int,absences int,id serial primary key)
Run Code Online (Sandbox Code Playgroud)

我想将这个包含 8 列的 select 不同查询中的所有值插入到另一个空表中。

SELECT DISTINCT ("school","sex","age","address","famsize","Pstatus","Medu","Fedu","Mjob","Fjob","reason","nursery","internet")
FROM students;
Run Code Online (Sandbox Code Playgroud)

a_h*_*ame 5

我想将这个包含 8 列的 select 不同查询中的所有值插入到另一个空表中。

使用create table .. as select ...,如果你要创建的表

create table new_table
as
SELECT DISTINCT school, sex, age, address, famsize, "Pstatus", "Medu", "Fedu", "Mjob", "Fjob", reason, nursery, internet
FROM students;
Run Code Online (Sandbox Code Playgroud)

其他明智的只是使用基于选择的插入:

insert into empty_table (school, sex, age, address, famsize, "Pstatus", "Medu", "Fedu", "Mjob", "Fjob", reason, nursery, internet)
SELECT DISTINCT school, sex, age, address, famsize, "Pstatus", "Medu", "Fedu", "Mjob", "Fjob", reason, nursery, internet
FROM students;
Run Code Online (Sandbox Code Playgroud)

非常重要:做把列加上括号在选择列表-创建一个单一的与匿名的记录类型列。