Ответ 1
INSERT INTO Movies (Title, Director, Cost, Profits)
SELECT 'Star Wars', name, 50000, 1000000
FROM Directors WHERE name = 'Lucas'
Для иллюстрации, скажем, у меня есть база данных Movies (Title, Director, Cost, Profits).
Теперь я хотел бы вставить новую строку в таблицу Movies, основанную на директоре, найденном в другой таблице, а затем жестко закодированные значения.
INSERT INTO Movies
SELECT name
FROM Directors
WHERE name = 'Lucas';
Я понимаю, как работают отдельные вставки, но что делать, если я хочу использовать select, а также передавать жестко закодированные значения. Итак, что-то теоретически такое:
INSERT INTO Movies
VALUES(Star Wars,(SELECT name
FROM Directors
WHERE name='Lucas'), 50000, 1000000);
Возможно ли это?
INSERT INTO Movies (Title, Director, Cost, Profits)
SELECT 'Star Wars', name, 50000, 1000000
FROM Directors WHERE name = 'Lucas'
Поскольку вы можете указать жестко заданные значения в инструкции select
, возможно, более чистым использовать:
insert into movies (title, director, cost, profits)
select 'Star Wars', name, 50000, 1000000 from directors where name = 'Lucas';
Да, это возможно. Синтаксис пользователя INSERT.. SELECT. Подробнее см. ссылка. Строгие кодированные значения должны быть в запросе SELECT, а не внутри значений VALUES. Например.
INSERT INTO Movies
SELECT 'Star Wars', name, 50000, 1000000
FROM Directors
WHERE name = 'Lucas';
у вас есть база данных в виде фильмов (название, директор, стоимость, прибыль). если вы хотите ввести значения в соответствующие таблицы, сначала выберите таблицу, а затем вставьте значения в эти таблицы.