2016-10-20 152 views
1

我有一個多對多的關係,並試圖插入一個新的關係。在我做插入點時,我不知道該ID,因此需要查看它。我的表結構看起來是這樣的:MySQL插入選擇結果

**person** 
id 
name 

**film** 
id 
title 

**person_film** 
personId 
filmId 

給定一個人的身份證和影片名稱列表(而不是他們的ID),我只能在兩個步驟中插入這些關係到person_film表。

SELECT id FROM film WHERE title="film1" OR title="film2"; 

然後,它的結果可以插入使用:

INSERT INTO person_film (personId, filmId) VALUES (5, 5),(5, 7); 

是否有一個SQL語句這樣做的呢?

回答

2

你可以用一個子查詢做到這一點:

INSERT INTO person_film (personId, filmId) 
    SELECT 5, id FROM film 
    WHERE title IN("film1","film2"); 

這裏5personId值和filmId將從film表中檢索。

0

在SELECT語句中使用帶有別名的數字文字。 No()在SELECT組件周圍是必需的。

INSERT INTO person_film (personId, filmId) 
    SELECT 
    /* Literal number values with column aliases */ 
    1 AS fpersonId, 
    2 AS filmId, 

    FROM film 
    WHERE title="film1" OR title="film2"; 

注意,在一個INSERT INTO的背景下... SELECT,別名實際上不是必要的,你可以選擇1,2,但在一個正常的選擇你需要的別名來訪問返回的列。