2013-05-21 4 views
0

Я создаю две таблицы в Postgres.Обновить таблицу (Postgres)

1-я таблица имеет один первичный столбец и другие столбцы & во 2-й таблице имеют один первичный столбец «MLeaseId» те же столбцы в 1-й таблице (не первичные 1-й таблицы) и другие столбцы.

Как скопировать данные из 1-го столбца таблицы во второй столбец данных?

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