这是我的mysql查询
SELECT a.id,
a.name,
a.pname,
b.skill,
date_add(a.end_date, interval 1 DAY) AS available_date
FROM
(SELECT user.id,
concat(user.first_name, " ", user.last_name) AS name,
resource_allocated.project_id,
project.project_name AS pname,
resource_allocated.end_date
FROM USER
RIGHT JOIN resource_allocated ON user.id = resource_allocated.user_id
RIGHT JOIN project ON resource_allocated.project_id = project.id
WHERE resource_allocated.is_active=1) a
LEFT JOIN
(SELECT user.id,
concat(user.first_name, " ", user.last_name) AS name,
user_skill.skill_id,
skill.skill_name AS skill
FROM USER
RIGHT JOIN user_skill ON user.id = user_skill.user_id
RIGHT JOIN skill ON user_skill.skill_id = skill.id) b ON a.id = b.id
ORDER BY a.id;
结果如下:
+----+----------+-------+-------+----------------+
| id | name | pname | skill | available_date |
+----+----------+-------+-------+----------------+
| 1 | john doe | hms | php | 2019-01-02 |
| 1 | john doe | hms | react | 2019-01-02 |
| 2 | jane doe | hms | java | 2020-01-16 |
| 2 | jane doe | IS | java | 2019-06-21 |
| 2 | jane doe | hms | js | 2020-01-16 |
| 2 | jane doe | IS | js | 2019-06-21 |
+----+----------+-------+-------+----------------+
我希望mysql query获得每个用户的最大日期,如下所示:
+----+----------+-------+-------+----------------+
| id | name | pname | skill | available_date |
+----+----------+-------+-------+----------------+
| 1 | john doe | hms | php | 2019-01-02 |
| 1 | john doe | hms | react | 2019-01-02 |
| 2 | jane doe | hms | java | 2020-01-16 |
| 2 | jane doe | IS | java | 2020-01-16 |
| 2 | jane doe | hms | js | 2020-01-16 |
| 2 | jane doe | IS | js | 2020-01-16 |
+----+----------+-------+-------+----------------+
如果可能,有人能为结果查询提供等效的sequelize代码吗?提前谢谢。
1条答案
按热度按时间krugob8w1#
如果你想得到结果中的最长日期(或最后日期),那么使用
max()
功能和用途group by name , pname
最后如果要按日期排列,请在查询末尾写下:
因此,最终查询将如下所示: