只需要3个具有相同JobID的记录,然后跳到下一个作业

时间:2018-09-28 07:49:26

标签: mysql sql

我需要从电影摄制组中选择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。

1 个答案:

答案 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
);