Я пытаюсь выполнить следующий запрос в postgresql, чтобы вставить данные в таблицу из результатов подзапроса двух таблиц.
Вот мои три примера таблиц -
CREATE TABLE a (
id SERIAL PRIMARY KEY
data int
);
CREATE TABLE b (
id SERIAL PRIMARY KEY,
aID INT
data INT
);
CREATE TABLE c (
id SERIAL PRIMARY KEY,
aID INT,
bID INT,
name VARCHAR
);
Я использую следующий запрос для вставки в таблицу c
-
INSERT INTO c (
aID,
bID,
name)
VALUES (
(SELECT id FROM a WHERE data=$1),
(SELECT id FROM b WHERE data=$2 AND aID=(SELECT id FROM a WHERE data=$1)),
$3)
ON CONFLICT (bID)
DO NOTHING;
Мне было интересно, можно ли использовать результаты первого SELECT
из таблицы a
во втором подзапросе, чтобы уменьшить доступ к данным. Я не уверен, что это правильный путь к go. Любая помощь будет оценена.