У меня есть три таблицы с двумя столбцами для каждой таблицы.PostgreSQL 9.5: При обновлении конфликта с CTE
Таблица: СТ1
create table ct1
(
id int primary key,
name varchar(10)
);
Таблица: СТ2
create table ct2
(
id int primary key,
name varchar(10)
);
Таблица: ct3
create table ct3
(
id int primary key,
name varchar(10)
);
Вставка:
insert into ct1 values(1,'A');
insert into ct1 values(2,'B');
insert into ct1 values(11,'C');
insert into ct1 values(12,'D');
Примечание: Я хочу, чтобы вставить запись в закладке таблицы ct3 путем выбора данных из двух других с использованием CTE таблицы (обязательное).
Моя попытка:
Запрос:
INSERT INTO ct3(id,name)
WITH CTE
AS
(
SELECT id,name from ct1
WHERE id is not null
),
cte2
as
(
SELECT id,name from ct2
WHERE name is not null
)
select c1.id as id1,c2.name as name1 from cte as c1,cte2 as c2
on conflict (id) do update
set
id = id1,
name = name1;
Ошибка:
ERROR: column "id1" does not exist
LINE 17: id = id1,
'from cte as c1, cte2 as c2' выглядит неправильно. Вы ** действительно ** хотите ** крест ** присоединиться (декартовой продукт) между двумя таблицами? –