【问题标题】:Insert into table from select distinct query in postgresql从postgresql中的select distinct查询插入表
【发布时间】:2017-01-05 23:44:03
【问题描述】:

我有一个包含 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)

我想插入此选择不同查询中的所有值 将 8 列放入不同的空表中。

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

【问题讨论】:

  • edit 提出您的问题并为相关表格添加create table 语句。 Formatted 文本no screen shots
  • 如果我使用它,我只会得到 8 个值,我想要所有 33 个值
  • 不清楚您要达到的目标。您是否正在尝试识别 8 个字段组合唯一的所有记录?
  • 我编辑了问题以获取更多详细信息
  • 不要不要在选择列表中的列名周围加上括号。这将创建一个具有匿名记录结构的 单个 列。

标签: postgresql


【解决方案1】:

我想将这个带有 8 列的 select distinct 查询中的所有值插入到不同的空表中。

如果要创建表,请使用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;

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

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;

非常重要:不要在选择列表中的列周围加上括号 - 这会创建一个具有匿名记录类型的单个列。

【讨论】:

    【解决方案2】:
    insert into destinationTable(dC1, dC2, dC3, dC4, dC5, dC6, dC7, dC8)
    select sC1, sC2, sC3, sC4, sC5, sC6, sC7, sC8
    from sourceTable
    

    您可以通过jointables 获得 33 个columns。

    【讨论】:

      猜你喜欢
      • 2020-04-12
      • 1970-01-01
      • 1970-01-01
      • 2015-08-24
      • 2021-07-06
      • 2014-05-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多