-1

我有一个非常简单的查询,我被困在试图只过滤 MAX(b.id) :

SELECT 
A.id,
b.id
from emp A
JOIN ACS B
ON B.id = A.id
and A.id =1553

在表 B 中,我们有三行 A.ID。我只需要得到更高的。我尝试使用“MAX(B.ID)”,但没有奏效。

这些是结果:

[
     {
          "rownumber": 1,
          "A.id": 1553,
          "b.id": 749
     },
     {
          "rownumber": 2,
          "A.id": 1553,
          "b.id": 4356
     },
     {
          "rownumber": 3,
          "A.id": 1553,
          "b.id": 4661
     }
]

我只需要返回 MAX(b.ID)。在这种情况下,我只需要:

     {
          "rownumber": 3,
          "emp_id": 1553,
          "id": 4661
     }

我将从过滤器选择中删除 A.id,对于 AI 中的每一行,只需要 B 中的 MAX。

提前致谢!

最好的方法是什么?

4

2 回答 2

1

一个简单的方法是使用RANK().

尝试这个:

select *
from
(
SELECT 
  A.id,
  b.id,
  RANK()OVER(PARTITION BY b.ID ORDER BY b.ID desc) as rnk
from emp A
JOIN ACS B
  ON B.id = A.id
  and A.id =1553
) as r
where rnk=1
于 2021-12-19T12:20:35.510 回答
1

因为你只想要idfromACS你可以使用相关的子查询

select e.id, (select Max(id) from ACS a where a.id = e.id) id
from emp e
where e.id = 1553;
于 2021-12-19T13:15:05.433 回答