【发布时间】:2023-01-15 10:56:06
【问题描述】:
正在尝试连接 user_id 上的两个表。 users 表对每个用户都有唯一的 id。 user_codes 表可以有多行具有相同的user_id。我只想从连接的 user_codes 表中返回 1 行,其中 code_count 是最大的。
用户表
| id | email |
| -------- | --------------- |
| 1 | user1@gmail.com |
| 2 | user2@gmail.com |
| 3 | user3@gmail.com |
用户代码表
| user_id | invite_code | count |
| -------- | ----------- | ------|
| 1 | X49MCL1 | 40 |
| 1 | K59CLT9 | 1000 |
| 2 | X5BC924 | 15 |
| 2 | 38DF80L | 8 |
| 3 | 641020T | 22 |
预期结果
| id | email | invite_code | count |
| --- | --------------- | ----------- | ------|
| 1 | user1@gmail.com | K59CLT9 | 1000 |
| 2 | user2@gmail.com | X5BC924 | 15 |
| 3 | user3@gmail.com | 641020T | 22 |
query result 仅包含在 user_codes 表中找到的具有最高 count 的每个用户的单个实例。
这是我能得到的最接近的查询,但它只为第一个用户返回 invite_code 和 count。
SELECT a.id, a.email, b.invite_code, b.count
FROM users a
LEFT JOIN user_codes b
ON b.user_id = a.id
AND b.count = (SELECT MAX(count) FROM user_codes GROUP BY b.user_id)
上面的查询返回结果:
| id | email | invite_code | count |
| --- | --------------- | ----------- | ------ |
| 1 | user1@gmail.com | K59CLT9 | 1000 |
| 2 | user2@gmail.com | `NULL` | `NULL` |
| 3 | user3@gmail.com | `NULL` | `NULL` |
我似乎无法弄清楚第一个记录之后的记录如何/为什么不包括 invite_code 和 count。
感谢帮助!
【问题讨论】: