我正在尝试编写一个MySQL查询,该查询将查找名称以B开头的演员领导的电影的标题。我有2个表,一个Actor Table和Movie Table。在我的Actor表中,我有actID和actName,在我的电影表中,我有mvID,actID(FK),mvTitle,mvGenre,mvPrice,mvYear。我已经写了一个类似问题的查询,并尝试为此查询修改它,但是它不能正常工作。到目前为止,我有:
SELECT mvTitle
FROM Movie
WHERE EXISTS (SELECT mvGenre
FROM Movie,
Actor
WHERE (Actor.actID = Movie.actID)
and (Actor.actName LIKE 'B%'))
这将返回所有电影标题,而不是返回特定的电影标题(因为它仅应返回3个标题),但返回所有10个标题。
答案 0 :(得分:2)
SELECT DISTINCT m.mvTitle from Movie m JOIN Actor a on a.actId = m.actId WHERE a.actName LIKE 'B%'
尝试......我选择使用联接,而不是子选择-对我来说似乎更干净。
答案 1 :(得分:2)
使用相关子查询
SELECT mvTitle
FROM Movie a
WHERE EXISTS (SELECT 1
FROM Actor b
WHERE a.actID = b.actID
and b.actName LIKE 'B%')
答案 2 :(得分:1)
SELECT mvTitle
FROM Movie where actID in (select actID from Actor where actName LIKE 'B%')