SELECT DISTINCT users.id as expert_id, users.firstname, users.lastname
, projects.id as project_id, projects.project_title
, projects.project_budget, projects.created as project_created
FROM USERS
RIGHT JOIN expert_skills ON expert_skills.expert_id = users.id
JOIN project_skills ON project_skills.skill_id = expert_skills.skill_id
JOIN projects ON projects.id = project_skills.project_id
WHERE projects.status = 1
Run Code Online (Sandbox Code Playgroud)
此查询为我提供了与用户相关的不同项目,但我想限制每位专家的项目数.例如,我想要与专家相关的项目,但项目数量最多可达10个.我的查询需要一个限制工具.我怎么能这样做?谢谢
如果 MySQL 有 row_number,这确实很容易,但事实并非如此。
因此,您需要修改安多马尔对类似问题的回答。
set @num := 0, @projectid:= -1;
SELECT DISTINCT users.id as expert_id, users.firstname, users.lastname, projects.id as project_id, projects.project_title, projects.project_budget, projects.created as project_created
FROM
USERS
RIGHT JOIN expert_skills ON expert_skills.expert_id = users.id
JOIN project_skills ON project_skills.skill_id = expert_skills.skill_id
JOIN projects ON projects.id = project_skills.project_id
JOIN
(select
users.id uid,
project.id pid,
@num := if(@projectid= projects.id, @num + 1, 1)
as row_number,
@projectid:= project.id
from USERS
RIGHT JOIN expert_skills ON expert_skills.expert_id = users.id
JOIN project_skills ON project_skills.skill_id = expert_skills.skill_id
JOIN projects ON projects.id = project_skills.project_id
WHERE projects.status = 1
order by
users.id, project.id desc
) as projectNum
on users.id = pid
and projects.id = pid
where projectNum.row_number <= 10
Run Code Online (Sandbox Code Playgroud)
请参阅data.stackoverflow.com中的此查询, 了解如何在支持窗口的数据库中执行此操作
| 归档时间: |
|
| 查看次数: |
544 次 |
| 最近记录: |