带有select和硬编码值的SQL插入

Mse*_*enb 23 mysql sql insert

为了便于说明,假设我有一个数据库电影(标题,导演,成本,利润).

现在我想基于另一个表中找到的导向器然后硬编码值在Movies表中插入一个新行.

INSERT INTO Movies 
SELECT name 
  FROM Directors 
 WHERE name = 'Lucas';
Run Code Online (Sandbox Code Playgroud)

我是如何理解选择插入工作,但如果我想使用选择以及传入硬编码值该怎么办.理论上这样的东西是这样的:

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

这可能吗?

Phi*_*hil 25

INSERT INTO Movies (Title, Director, Cost, Profits)
SELECT 'Star Wars', name, 50000, 1000000
FROM Directors WHERE name = 'Lucas'
Run Code Online (Sandbox Code Playgroud)

  • 如果包括电影表的字段名也会更好 (4认同)

pax*_*blo 9

因为您可以在select语句中指定硬编码值,所以使用它可能更简洁:

insert into movies (title, director, cost, profits)
   select 'Star Wars', name, 50000, 1000000 from directors where name = 'Lucas';
Run Code Online (Sandbox Code Playgroud)


Man*_*nny 5

是的,这是可能的.用户INSERT .. SELECT语法.有关详细信息,请参阅参考 硬编码值应该在SELECT查询中,而不是在VALUES中.例如

INSERT INTO Movies
SELECT 'Star Wars', name, 50000, 1000000
FROM Directors 
WHERE name = 'Lucas';
Run Code Online (Sandbox Code Playgroud)