0

我正在 Postgres 中创建两个表。

第一个表有一个主列和其他列,并且在第二个表中有一个主列“MLeaseId”,这些列在第一个表中相同(不是第一个表的主列)和其他列。

如何将数据从第一个表列复制到第二列数据?

CREATE TABLE leasetype (
  "LeaseTypeId" integer  NOT NULL ,
  "MLeaseId" character varying(45) NOT NULL,
  "Resident" integer NOT NULL,
  "Business" integer NOT NULL,
  "RArea" float  NULL,
  "BArea" float  NULL,
  "RRent" double  NULL,
  "BRent" double NULL,
  PRIMARY KEY (LeaseTypeId)
);

CREATE TABLE masterlease (
  "SrNo" integer unsigned NOT NULL,
  "MLeaseId" varchar(45) NOT NULL,
  "ExtId" integer unsigned NOT NULL,
  "MPlotNo" character varying(45) NOT NULL,
  "DPlotNo" character varying(45) NOT NULL,
  "SheetNo" character varying(45) NOT NULL,
  "NastiNo" character varying(45) NOT NULL,
  "Date" date NOT NULL,
  "LHolderName" character varying(45) NOT NULL,
  "PhoneNo" character varying(45) DEFAULT NULL,
  "TotArea" double NOT NULL,
  "LeaseDuration" float NOT NULL,
  "UseTypeId" int(6) NOT NULL,
  "LFromDate" date NOT NULL,
  "LToDate" date NOT NULL,
  "OrderDtl" text,
  "Remark" text,
  "Address" character varying(300) NOT NULL,
  PRIMARY KEY (MLeaseId)
)
4

1 回答 1

1

您可以通过从其他表中选择数据来插入数据(通过任何查询,您只需确保查询返回的数据与插入参数相同。如果我理解正确,您想要的行正在添加到 masterlease,以使“MLeaseId”列混合各种租约类型列。

尝试这个:

INSERT INTO masterlease(
    "SrNo", 
    "MLeaseId"
    )
SELECT 
    123,
    concat(leasetype."MLeaseId",'any_code', leasetype."RArea")::varchar as MLeaseId
FROM
    leasetype

当然,您还需要添加其他值。您可以像我在“SrNo”中所做的那样手动执行此操作,也可以在 SELECT 语句中加入其他表。

不要忘记 INSERT INTO 语句的列类型必须与 SELECT 语句完全匹配。您可以通过强制转换(例如::varchar)来强制执行。

于 2013-05-29T00:13:36.210 回答