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

时间:2018-06-18 23:17:40

标签: sql

说我有两张桌子:

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?

真实表有更多列和更多连接。

1 个答案:

答案 0 :(得分: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;