#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;