вставка нескольких значений из инструкции select

#sql #postgresql

#sql #postgresql

Вопрос:

Добрый день, коллеги-SQLers! Я работаю над вставкой нескольких значений в таблицу, обе таблицы находятся в разных схемах.

 INSERT INTO users.users (created_by, email, passwd) 
VALUES (
  (SELECT 
    customers.created_by,
    customers.email,
    'P455word'
   FROM customers.customers
   WHERE customers.tbl_id = (SELECT MAX(customers.tbl_id) FROM customers.customers)
    )
);
  

Я получаю эту ошибку: ОШИБКА: подзапрос должен возвращать только один столбец
Есть предложения по обходному пути?

Спасибо.

Ответ №1:

Не используйте values :

 INSERT INTO users.users (created_by, email, passwd) 
    SELECT customers.created_by, customers.email, 'P455word'
    FROM customers.customers
    WHERE customers.tbl_id = (SELECT MAX(customers.tbl_id) FROM customers.customers);
  

Предполагая, что вы намерены вставить только одну строку, вы могли бы рассмотреть:

 INSERT INTO users.users (created_by, email, passwd) 
    SELECT c.created_by, c.email, 'P455word'
    FROM c.customers
    ORDER BY c.tbl_id DESC
    LIMIT 1;