我需要从电影摄制组中选择8个人。我只想拥有3个生产者,然后让查询继续其他工作。
这是我现在的查询:
SELECT EmployeeID, j.NameEN, e.Firstname, e.Lastname, j.ID AS JobId
FROM crew AS c
LEFT JOIN job AS j ON c.JobID = j.ID
LEFT JOIN employee AS e ON c.EmployeeID = e.Id
WHERE c.MovieID = 237038
ORDER BY j.SortOrder ASC, c.JobID ASC, e.Score DESC
LIMIT 8
如何才能只选择3个具有相同工作ID的员工?
样本输出
EmployeeID NameEN Firstname Lastname JobId
802 Director Chris Columbus 2
5707 Director David Yates 2
1705 Director Mike Newell 2
175 Director Alfonso Cuarón 2
5115 Writer Steve Kloves 3
2041 Writer Michael Goldenberg 3
11096 Writer J.K. Rowling 3
您可以在这里看到我有4位董事。期望的输出将是最多3个Directors。
答案 0 :(得分:1)
我认为针对您的特定问题最简单的方法是union all
:
(SELECT EmployeeID, j.NameEN, e.Firstname, e.Lastname, j.ID AS JobId
FROM crew c LFT JOIN
job j
ON c.JobID = j.ID LEFT JOIN
employee e
ON c.EmployeeID = e.Id
WHERE c.MovieID = 237038 AND
j.NameEN = 'Producer'
ORDER BY j.SortOrder ASC, c.JobID ASC, e.Score DESC
LIMIT 3
) UNION ALL
(SELECT EmployeeID, j.NameEN, e.Firstname, e.Lastname, j.ID AS JobId
FROM crew c LFT JOIN
job j
ON c.JobID = j.ID LEFT JOIN
employee e
ON c.EmployeeID = e.Id
WHERE c.MovieID = 237038 AND
j.NameEN <> 'Producer'
ORDER BY j.SortOrder ASC, c.JobID ASC, e.Score DESC
LIMIT 5
);