Запрос вставки не поддерживает ключевое слово *
Условия применяются, потому что вы можете использовать условие where для операторов выбора ниже.
Вы можете выполнять сложные вставки с помощью вложенных элементов.
Например:
INSERT INTO suppliers
(supplier_id, supplier_name)
SELECT account_no, name
FROM customers
WHERE city = 'Newark';
Поместив «select» в оператор вставки, вы можете быстро выполнить несколько операций вставки.
При таком типе вставки вы можете проверить количество вставляемых строк. Вы можете определить количество строк, которые будут вставлены, выполнив следующую инструкцию SQL перед выполнением вставки.
SELECT count(*)
FROM customers
WHERE city = 'Newark';
Вы можете убедиться, что не вставляете дублирующую информацию, используя условие EXISTS.
Например, если у вас есть таблица с именем клиентов с первичным ключом client_id, вы можете использовать следующий оператор:
INSERT INTO clients
(client_id, client_name, client_type)
SELECT supplier_id, supplier_name, 'advertising'
FROM suppliers
WHERE not exists (select * from clients
where clients.client_id = suppliers.supplier_id);
Этот оператор вставляет несколько записей с подвыбором.
Если вы хотите вставить одну запись, вы можете использовать следующий оператор:
INSERT INTO clients
(client_id, client_name, client_type)
SELECT 10345, 'IBM', 'advertising'
FROM dual
WHERE not exists (select * from clients
where clients.client_id = 10345);
Использование двойной таблицы позволяет вводить ваши значения в операторе выбора, даже если эти значения в настоящий момент не хранятся в таблице.
См. Также Как вставить с помощью предложения where