2010-11-10 33 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

你有數據庫作爲電影(標題,導演,成本,利潤)。 如果你想輸入相應表格中的值,那麼首先選擇表格,然後在這些表格中插入值。