说我有两张桌子:
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?
真实表有更多列和更多连接。
答案 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;