2013-05-21 152 views
0

我在Postgres中创建两个表格。更新相关表格(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) 
) 
+0

http://www.postgresql.org/docs/9.2/static/sql-update.html –

+0

INSERT INTO ... SELECT'? 'UPDATE'? 'UPDATE ... FROM'?请看用户手册。如果仍然卡住,请显示一些示例行以及您希望结果的外观。 –

回答

1

您可以通过从其他表中选择它(通过任何查询所有插入的数据,你只需要确保由该查询返回的数据是一样的插件参数。 如果我理解正确的话,你想将被加入到masterlease,有“MLeaseId”列各种leasetype列的组合行

试试这个:

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)。