2010-11-10 32 views
16

为了便于说明,假设我有一个数据库,电影(片名,导演,成本,利润)。SQL插入与选择和硬编码值

现在我想插入新行根据另一个表中找到了一个导演,然后硬编码值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); 

这可能吗?

+0

如果u有选择的名字[卢卡斯]从导演表,则不会是简单的,如果我们直接使用来自另一个表中选中的卢卡斯呢? – KoolKabin 2010-11-10 05:07:30

+0

@Kool,我认为只是一个例子,虽然,说实话,我不知道的行为,如果董事_has_没有卢卡斯(错误或插入任何行)。 – paxdiablo 2010-11-10 05:11:58

+0

@paxdiablo,插入零行 – Phil 2010-11-10 05:13:40

回答

19
INSERT INTO Movies (Title, Director, Cost, Profits) 
SELECT 'Star Wars', name, 50000, 1000000 
FROM Directors WHERE name = 'Lucas' 
+4

甚至会更好,如果包括电影表太 – KoolKabin 2010-11-10 05:03:15

+0

@KoolKabin真正的字段名,但问题是不是即将到来的这些细节 – Phil 2010-11-10 05:05:45

+0

也许你应该仔细看:-) – paxdiablo 2010-11-10 05:08:32

6

因为你可以指定在select声明硬编码值,它可能是更清洁的使用方法:

insert into movies (title, director, cost, profits) 
    select 'Star Wars', name, 50000, 1000000 from directors where name = 'Lucas'; 
4

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

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

你有数据库作为电影(标题,导演,成本,利润)。 如果你想输入相应表格中的值,那么首先选择表格,然后在这些表格中插入值。