Использование предложения WITH с оператором INSERT в POSTGRESQL - PullRequest
0 голосов
/ 16 мая 2018

У меня есть требование, при котором мне нужно получить один столбец из другой таблицы и вставить данные этого столбца вместе с некоторыми другими данными в другую таблицу.

Пример:

Если cust_id = '11 ', тогда мне нужно получить код cust_code из таблицы cust (скажем, он возвращает cust_code =' ABCD '), а затем использовать этот код cust_code с некоторыми другими данными для вставки в table_1 следующим образом:

WITH get_cust_code_for_cust_id AS (
    SELECT cust_code FROM cust WHERE cust_id=11
)

INSERT INTO public.table_1(
    cust_code, issue, status, created_on)
    VALUES (SELECT cust_code FROM get_cust_code_for_cust_id, 'New Issue', 'Open', current_timestamp)

Но этот запрос не работает, так как мы не вызвали запрос get_cust_code_for_cust_id.

Я предпочитаю какой-то запрос с предложением WITH, но любой другой ответ также будет оценен.

1 Ответ

0 голосов
/ 16 мая 2018

Если источником оператора insert является select do , а не , используйте ключевое слово VALUES.

WITH get_cust_code_for_cust_id AS (
    SELECT cust_code 
    FROM cust 
    WHERE cust_id=11
)
INSERT INTO public.table_1 (cust_code, issue, status, created_on)
SELECT cust_code, 'New Issue', 'Open', current_timestamp 
FROM get_cust_code_for_cust_id;

Вам не нужен CTE для этого:

INSERT INTO public.table_1 (cust_code, issue, status, created_on)
SELECT cust_code, 'New Issue', 'Open', current_timestamp  
FROM cust 
WHERE cust_id=11
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...