我无法让这个看似简单的插入查询工作

zer*_*rmy 0 sql postgresql

家伙.我有一个查询,旨在从一个表中获取结果并将其插入另一个表.它看起来像这样:

INSERT INTO minutes_deleted 
    SELECT * FROM minutes
    WHERE minutes_id = 103
Run Code Online (Sandbox Code Playgroud)

现在,我甚至不知道你可以尝试插入那样的东西.(我认为插入语句都有语法INSERT INTO blah VALUES (some values),但在阅读手册后我发现你可以.

现在,问题在于这会产生错误:column "meeting_id" is of type integer but expression is of type character varying我认为发生此错误是因为列的minutes_deleted顺序与其中的顺序不同minutes_id.

minutes_deleted还有一些找不到的minutes列,但是所有列minutes都可以找到minutes_deleted,但是在混乱的顺序中.

根据手册,表中包含填充内容的所有列(即minutes_deleted必须给出一个值,如果我可以通过列顺序,查询可能仍会因此而失败.

那么,如果您愿意,可以提出以下两个简

1) - 我如何重新排列列的顺序,所以它的工作原理.
2) - 如何为minutes_deleted不存在的列指定空值minutes

非常感谢你的帮助.

p.c*_*ell 7

您的问题是您的目标和源表没有相同的列数据类型.

要解决此问题,请在您的目标和来源的列顺序中明确说明.

 INSERT INTO MyDestination ( Column1, Column2, Column3)
      SELECT ColumnA,
             ColumnB,
             ColumnC
      FROM   MySource;
Run Code Online (Sandbox Code Playgroud)
  • ColumnA必须与Column1的类型相同
  • ColumnB必须与Column2的类型相同
  • ColumnC必须与Column3的类型相同

在您需要适合目的地时应用转换/转换.