2016-10-20 154 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,但在一个正常的选择你需要的别名来访问返回的列。