选择顶部 ID 位于顶部 (10) 的所有行



假设我有两个表:

Person: PersonId, Name
PersonAddress: PersonAddressId, PersonId, Street

一个人可以有多个地址。

PersonId上做一个左连接并过滤Name,例如like '%john%'

现在我得到了许多行。而且我只需要前 10 个人(按 id(,如果每个人有 20 个地址,可以组成 2 行。我需要那 20 行。

最好的方法是什么?

Select...
Where PersonId IN (Select distinct personId ...)

或者使用Over来指望更改 ID?

实际表具有更多的列和更多的联接。

您需要在join之前完成前 10 名。 让我假设您正在使用 SQL Server 或使用top的相关数据库:

select p.*, . . .
from (select top (10) p.*
from person p
where name like '%john%'
order by id
) p left join
personaddress pa
on pa.PersonId = p.PersonId;

最新更新