说我有一张桌子
桌上游戏
date | track_id | user_id | rating
-----------------------------------------
20170416 | 1 | 1 | 3 (***)
20170417 | 1 | 1 | 5
20170418 | 2 | 1 | 1
20170419 | 3 | 1 | 4
20170419 | 3 | 1 | 2 (***)
20170420 | 1 | 2 | 5
Run Code Online (Sandbox Code Playgroud)
我想要做的是对于每个唯一的 track_id, user_id 我想要最高评级的行。即产生下面的表格,其中(***)行被删除。
20170417 | 1 | 1 | 5
20170418 | 2 | 1 | 1
20170419 | 3 | 1 | 2
20170420 | 1 | 2 | 5
Run Code Online (Sandbox Code Playgroud)
知道什么是明智的 SQL 查询吗?
使用 MAX 内置函数和 GROUP by 子句:
SELECT track_id, user_id, MAX(rating)
FROM Your_table
GROUP BY track_id, user_id;
Run Code Online (Sandbox Code Playgroud)