【发布时间】:2021-04-17 09:26:37
【问题描述】:
我有以下疑问:
select count(1) num, business_id, user_id FROM `pos_transactions`
group by user_id, business_id
order by user_id
它返回这个:
+--------+-------------+---------+
| num | business_id | user_id |
+--------+-------------+---------+
| 3 | 503 | 12 |
| 7 | 33 | 12 |
| 1 | 771 | 13 |
| 2 | 86 | 13 |
| 1 | 772 | 13 |
| 4 | 652 | 14 |
| 4 | 567 | 14 |
+--------+-------------+---------+
我只需要为每个user_id 选择一行,即num 值更大的那一行。如果用户的所有num 值都相同,则应随机选择其中一个(即用户#14)。所以,这是预期的结果:
+--------+-------------+---------+
| num | business_id | user_id |
+--------+-------------+---------+
| 7 | 33 | 12 |
| 2 | 86 | 13 |
| 4 | 567 | 14 |
+--------+-------------+---------+
知道我该怎么做吗?
我想解决方案将与每个用户的limit 1 有关。但我不知道应该如何编写查询。
我想要做的就是让每个user_id 的表唯一,并且逻辑是选择具有更大num 的行。
【问题讨论】:
-
@Strawberry 真的吗?我的问题还不够清楚?
-
你的MySql是什么版本的?
-
@forpas
Server version: 8.0.20 - MySQL Community Server - GPL