假设我有两个表:
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;