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

问题描述 投票:-1回答:1

说我有两张桌子:

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

一个人可以有多个地址。

PersonId左边连接并过滤Name,例如,like '%john%'

现在我得到了很多行。我只需要排名前10的人(按id),如果每个人有2个地址,那么可以组成20行。我需要20行。

最好的方法是什么?

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

或者使用Over可能依靠改变的ID?

真正的表有更多的列和更多的连接。

sql
1个回答
0
投票

你需要在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;
© www.soinside.com 2019 - 2024. All rights reserved.