MySQL查询分组和限制1 Desc

时间:2018-11-15 00:11:49

标签: mysql

表名:用户

enter image description here

我试图查询该表,以便给我一个结果,显示-用户名-其中-上次批准的状态-按名称分组-具有manager_2为Stan

下面的预期结果图片

enter image description here

类似

SELECT id,name,manager_1,manager_2,department_status_fruits 
FROM users 
WHERE status = --- the last approved entry for (group by Name), 
if manager_2 = stan 
ORDER BY id DESC 
LIMIT 1


SELECT id,name,manager_1,manager_2,department_status_fruits 
FROM users 
WHERE manager_2 = 'stan' AND status = 'approved' 
group by name 
ORDER BY id DESC 
LIMIT 1

我尝试过的所有查询都没有给出预期的结果,实际上,我发现很难甚至形成查询来解释请求。

我想,子查询或联接是我所必须追求的,但建议联接还是我想要的。

1 个答案:

答案 0 :(得分:0)

您需要使用一个查询,该查询返回每个名称的最后一个批准的行。有关各种方法,请参见SQL select only rows with max value on a column

然后,您可以将其进一步过滤到manager_2 = 'stan'的地方。

SELECT u1.*
FROM users AS u1
JOIN (SELECT name, MAX(id) AS maxid
      FROM users
      WHERE status = 'approved'
      GROUP BY name) AS u2 ON u1.id = u2.id
WHERE manager_2 = 'stan'
ORDER BY id DESC
LIMIT 1