2013-05-21 151 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)。