Вставка SQL с выбранными и жестко закодированными значениями - PullRequest
22 голосов
/ 10 ноября 2010

Для иллюстрации, скажем, у меня есть база данных фильмов (название, режиссер, стоимость, прибыль).

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

INSERT INTO Movies 
SELECT name 
  FROM Directors 
 WHERE name = 'Lucas';

Как я понимаю, выборочные вставки работают, но что, если я хочу использовать выборку, а также передать жестко закодированные значения. Итак, что-то теоретически так:

INSERT INTO Movies 
VALUES(Star Wars,(SELECT name 
                    FROM Directors 
                   WHERE name='Lucas'), 50000, 1000000);

Возможно ли это?

Ответы [ 4 ]

24 голосов
/ 10 ноября 2010
INSERT INTO Movies (Title, Director, Cost, Profits)
SELECT 'Star Wars', name, 50000, 1000000
FROM Directors WHERE name = 'Lucas'
9 голосов
/ 10 ноября 2010

Поскольку вы можете указывать жестко закодированные значения в операторе select, возможно, лучше использовать:

insert into movies (title, director, cost, profits)
   select 'Star Wars', name, 50000, 1000000 from directors where name = 'Lucas';
5 голосов
/ 10 ноября 2010

Да, это возможно.Пользователь INSERT .. SELECT синтаксис.См. ссылка для получения более подробной информации.Жестко закодированные значения должны быть в вашем запросе SELECT, а не внутри VALUES.Например,

INSERT INTO Movies
SELECT 'Star Wars', name, 50000, 1000000
FROM Directors 
WHERE name = 'Lucas';
1 голос
/ 10 ноября 2010

у вас есть база данных как фильмы (название, режиссер, стоимость, прибыль).если вы хотите ввести значения в соответствующие таблицы, сначала выберите таблицу, а затем вставьте значения в эти таблицы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...