首页 > 解决方案 > 在与另一个连接的表上使用 Max

问题描述

目标是创建数据记录的概览。这些记录来自多个表。其中一个表包含每条记录的几行,每行都有一个 ID 号。只应显示具有最高 ID 号的那个。

我尝试过使用 Inner Joins 做一些事情,但我做错了。

问题的简化视图:

Tabel1      
Tabel1_Id   ValueA      ValueB
1           ABC         DEF
2           GHI         JKL
3           MNO         PQR
4           STU         VWX

Tabel2          
Tabel2_id   Tabel1_Id   Number      ValueC
1           1           1           Green
2           1           2           Yellow
3           2           1           Blue
4           1           3           Red
5           3           1           Purple
6           3           2           Pink
7           2           2           Violet
8           4           1           Magenta
9           2           3           Cyan
10          4           2           Teal

Desired Result      
ValueA  ValueB  ValueC
ABC     DEF     Red
GHI     JKL     Cyan
MNO     PQR     Pink
STU     VWX     Teal

标签: mysqlsqlgreatest-n-per-group

解决方案


如果您的 DBMS 支持row_number(),那么您可以在下面使用

with cte as
(select *,row_number()over(partition by Tabel1_Id order by Number desc) rn
from table2
) select valueA,valueV,valuec
 from cte join table1 t1 on cte.Tabel1_Id=t1.Tabel1_Id
  where cte.rn=1

推荐阅读